Nginx配置


记录Nginx配置与使用


🖋 Nginx的下载

Nginx的使用

  • 常用目录结构

    名称 描述 文件
    conf 存放Nginx配置文件的目录 配置文件nginx.conf
    docs 存放默认的Html网页 index页和50x错误页
    logs 存储Nginx运行日志 access和error日志
  • 配置文件


### 全局块  ###
user nginx;  # 设置 Nginx 工作进程运行的身份(默认为nobody 不同操作系统不同,此项主要涉及安全问题)
worker_processes auto;  # 自动根据 CPU 核心数设置工作进程数量 通常等于CPU核心数或者为其俩倍
error_log /var/log/nginx/error.log warn;  # 错误日志的位置和级别
pid /run/nginx.pid;  # 主进程的 PID 文件位置

### 事件块 ####
# use:用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
# 其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,对于Linux系统,epoll工作模式是首选。
#worker_connections:用于定义Nginx每个进程的最大连接数,即接收前端的最大请求数,默认是1024。
# 最大客户端连接数由worker_processes和worker_connections决定,即Max_clients=worker_processes*worker_connections,
# 在作为反向代理时,最大客户端连接数量 = worker_processes * worker_connections/4。 
# 进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。
### 事件块 ####
events {
    worker_connections 1024;  # 每个工作进程可以同时处理的最大连接数 默认为512
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off 
    use epoll;  # 使用 epoll 连接处理模型(Linux 系统推荐);事件驱动模型
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
}

### HTTP 块  ###
# 此处配置主要分为两块 server块和upstream(可选),upstream为nginx反向代理的服务器宕机的备用机,通常配置此项为了增加安全性
# server块又包括location块,每个server块都相当于一个虚拟的主机
### HTTP 块  ###
http {
    include       /etc/nginx/mime.types;  # 包含 MIME 类型定义 详见nginx/conf目录下 不设置默认情况下有可能识别到无法处理的MIME类型
    default_type  application/octet-stream;  # 默认 MIME 类型

    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;  # 禁用 Nagle 算法
    keepalive_timeout  65;  # 保持连接的超时时间

    gzip  on;  # 开启 Gzip 压缩
    gzip_disable "msie6";  # 对于 IE6 浏览器禁用 Gzip

    # 虚拟主机配置
    server {
        listen 80;  # 监听 80 端口
        server_name example.com www.example.com;  # 服务的域名

        # 静态文件根目录
        root /var/www/html;
        index index.html index.htm;  # 默认索引文件

        # 处理所有请求
        location / {
            try_files $uri $uri/ =404;  # 尝试查找文件或目录,不存在则返回 404,此处$uri为当前请求路径/ex则先查询是否有ex的文件,若无则访问此目录
        }

        # 处理特定路径下的请求
        location /images/ {
            autoindex on;  # 启用目录列表功能
            autoindex_exact_size off;  # 不显示文件的确切大小
            autoindex_localtime on;  # 显示本地时间
        }

        # 错误页面
        error_page 404 /404.html;
        location = /404.html {
            internal;  # 只能由内部重定向访问
        }
    }

    # 反向代理配置
    server {
        listen 8080;  # 监听 8080 端口
        server_name proxy.example.com;

        location / {
            proxy_pass https://backend;  # 反向代理到后端服务器
            proxy_set_header Host $host;  # 传递原始 Host 请求头
            proxy_set_header X-Real-IP $remote_addr;  # 传递客户端 IP 地址
        }
    }

    # 上游服务器组
    upstream backend {
        server 192.168.1.1:8081;  # 第一个后端服务器
        server 192.168.1.2:8081;  # 第二个后端服务器
    }
}