nginx

一.概念

  • Nginx 是一个高性能、开源的 Web 服务器反向代理服务器负载均衡器
  • 以其 高并发处理能力、低内存消耗稳定性 而闻名。
  • 常用于托管静态内容、反向代理动态应用(如 PHP, Python, Java 应用)、负载均衡、缓存加速以及作为 HTTP 或 TCP/UDP 流量的代理。

二.核心功能

  • HTTP(S) 服务器: 直接提供静态文件(HTML, CSS, JS, 图片等)。
  • 正向代理

正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

  • 反向代理:
    • 接收客户端请求。
    • 根据配置规则,将请求转发给后端的一个或多个服务器(如应用服务器 Tomcat, uWSGI, Gunicorn 等)。
    • 接收后端服务器的响应。
    • 将响应返回给客户端。
    • 对客户端隐藏了后端服务器的真实信息。

它是在客户端和服务器端的一个代理服务器,但是这个代理服务器的目的是用来保护服务器端的,当外网客户端来访问我们的服务器时为了避免暴露应用服务器的实际ip地址,我们会让客端访问代理服务器,然后代理服务器再根据客户端的请求去实际的应用服务器获取响应内容并返回客户端

  • 负载均衡:
    • 将客户端请求分发到多个后端服务器,实现流量分摊、提高系统吞吐量和容错能力。
    • 常用算法:轮询、权重轮询、IP哈希、最少连接等。
  • 缓存:
    • 可以缓存后端服务器的响应内容,加速对相同请求的响应速度,减轻后端压力。
  • SSL/TLS 终止: 处理客户端的 HTTPS 请求,完成 SSL/TLS 握手和解密,再将明文请求转发给后端服务器(后端可用 HTTP)。
  • 动静分离: 直接处理静态文件请求,动态请求则转发给应用服务器处理。

三.nginx命令

常用命令
bash 复制代码
systemctl  start  nginx   # 启动服务

systemcctl restart  nginx  # 重启服务

systemctl  enable  nginx   # 开机启动

systemctl  stop  nginx     # 停止服务

systemctl  disable  nginx  # 取消开机启动

systemctl  status   nginx  # 查看状态
nginx自带命令
bash 复制代码
nginx    # 启动nginx

nginx   restart  # 重启服务

nginx  -s  reload  # 重新加载配置文件

nginx  -s  stop    # 强行停止服务

nginx  -s  quit    # 优雅停止服务,即所有请求处理完后退出服务

nginx  -v         # 查看版本号

nginx -t         # 检查配置文件的语法错误,无错返回ok

四.nginx配置

安装nginx
bash 复制代码
yum  install  nginx  -y  #安装nginx
nginx  -V  # 查看版本,编译器、配置参数等信息
systemctl start  nginx   # 启动httpd
systemctl enable  nginx  # 设置开机启动
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
systemctl status  nginx    # 查看状态,q键退出查看
ps  -ef  |  grep  nginx  # 查看进程
主要配置文件

网页默认目录:/usr/share/nginx/html

访问日志:/var/log/nginx/access.log

错误日志:/var/log/nginx/error.log

主配置文件分析:
bash 复制代码
[root@server ~]# vim  /etc/nginx/nginx.conf
bash 复制代码
# main配置段(全局配置)
user nginx;              # 运行的账户,默认即是nginx,可以不进行设置
worker_processes auto;   # worker进程数,根据硬件调整,通常等于CPU数量或者2倍于CPU
error_log /var/log/nginx/error.log;   # 错误日志存放目录
pid /run/nginx.pid;     # 指定运行Nginx master主进程的pid文件存放路径

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;  #  导入的外部文件位置


# events配置段,性能模块设置,其中可以设置时间处理模式等
events {     
	     use epoll;     # 使用epoll事件驱动模型,但不推荐配置它,让nginx自己选择
   		 worker_connections 1024;   # 每个进程的最大连接数量(并发数)
   		 accept_mutex on # 默认是off关闭的,这里推荐打开
}

# http配置段,包含全局块和server块,使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置
http {  
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
        # 以上定义日志格式
    access_log  /var/log/nginx/access.log  main;   # 访问日志存储位置

    sendfile            on;   # 高效文件传输模式,默认开启
    tcp_nopush          on;   # 性能优化参数,数据是否立刻发送
    tcp_nodelay         on;   # 性能优化参数,小数据包是否延迟发送
    keepalive_timeout   65;   # 超时时间
    types_hash_max_size 4096; # 性能优化参数,影响散列表的冲率

    include             /etc/nginx/mime.types;      # 可解析的静态资源类型
    default_type        application/octet-stream;   # 默认文件类型

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;   # 加载子配置项
    # server配置段,虚拟主机设置
    server {  
        listen       80;        # 监听IPV4端口
        listen       [::]:80;   # 监听IPV6端口
        server_name  _;         # 访问的域名
        root         /usr/share/nginx/html;    # 网页默认目录

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;   # 子配置文件存储路径
		
		# location配置段,一般用来匹配不同的URI请求
      	location / {
        	root   /usr/share/nginx/html;     # 相对路径网站根目录
        	alias  /usr/share/nginx/html/;    # 绝对路径网站根目录
        	index  index.html index.htm;      # 默认首页文件
        	deny 172.168.22.11;       # 禁止访问的ip地址,可以为all
        	allow 172.168.33.44;     # 允许访问的ip地址,可以为all
        	autoindex  on;           # 开启目录文件列表
        	autoindex_exact_size on;   # 显示出文件的确切大小,单位是bytes
			autoindex_localtime on;    # 显示的文件时间为文件的服务器时间
			charset utf-8,gbk;         # 避免中文乱码
			auth_basic "xxxx";   # 加密网页验证时的提示信息
    		auth_basic_user_file   /路径/文件名;   # 加密网页使用的密码验证文件
      		}
        error_page 404 /404.html;        # 404时返回给客户端的页面
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;  # 50x错误返回给客户端的页面
           location = /50x.html {
        }
    }

# Settings for a TLS enabled server.   # https虚拟主机定义
#
#    server {
#        listen       443 ssl http2;    # 监听的IPV4端口
#        listen       [::]:443 ssl http2; 
#        server_name  _;
#        root         /usr/share/nginx/html;   # 网页默认目录
#
#        ssl_certificate "/etc/pki/nginx/server.crt";   # 证书存储路径
#        ssl_certificate_key "/etc/pki/nginx/private/server.key"; # 密钥存储
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}
虚拟主机功能

在/www/下创建对应heml文件:

1.基于 IP 地址的虚拟主机

如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。

在/etc/nginx/conf.d目录下建立子配置文件实现:

2.基于端口号的虚拟主机

用浏览器访问:

3.基于域名的虚拟主机

进行访问测试:

相关推荐
云飞云共享云桌面2 小时前
三维设计办公资源如何共享集中和安全管控?
运维·服务器·数据库·安全·自动化·制造
图乐aj3 小时前
kafka 运维基础知识
运维·kafka
jyan_敬言3 小时前
【Docker】定义和运行多容器应用程序
运维·docker·容器·学习方法
傲世(C/C++,Linux)3 小时前
Linux系统编程——进程通信之有名管道
android·linux·运维
雷工笔记4 小时前
计算机更换硬盘并新装系统
运维·学习
运维成长记4 小时前
11月份运维面试题
运维
yuanManGan4 小时前
走进Linux的世界:进程优先级
linux·运维·服务器
一叶知秋yyds4 小时前
linux 系统查看进程占用物理内存大小方法
linux·运维·服务器
Bowen_CV5 小时前
Linux 系统安装与环境配置实践
linux·运维·服务器