Nginx 配置详解:从基础到进阶

Nginx 配置详解:从基础到进阶

Nginx(发音为“engine-x”)是一款高性能的HTTP服务器、反向代理服务器负载均衡器,其配置文件是实现所有功能的核心。Nginx的配置采用模块化结构,语法简洁但功能强大,掌握配置规则是灵活运用Nginx的关键。本文将从配置文件结构、核心模块配置、常见场景示例三个维度,全面解析Nginx配置。

一、Nginx 配置文件基础

1. 配置文件路径

默认情况下,Nginx的主配置文件路径由编译安装时的--prefix参数指定(如之前你配置的/usr/local/nginx/conf/nginx.conf),不同安装方式路径可能不同:

  • 编译安装(自定义):/usr/local/nginx/conf/nginx.conf(你的环境路径)
  • YUM/DNF安装(CentOS/RHEL):/etc/nginx/nginx.conf
  • APT安装(Ubuntu/Debian):/etc/nginx/nginx.conf

主配置文件可通过include指令引入其他子配置(如虚拟主机配置、模块配置),常见的子配置路径:

  • 虚拟主机:/usr/local/nginx/conf/conf.d/*.conf(或/etc/nginx/conf.d/
  • 模块特定配置:/usr/local/nginx/conf/modules/*.conf

判断当前是 编译安装 还是 YUM/DNF安装:

1. 查看 Nginx 安装路径

# 查看Nginx可执行文件位置
which nginx

image

  • 若输出/usr/local/nginx/sbin/nginx源码编译安装,主配置在/usr/local/nginx/conf/nginx.conf
  • 若输出/usr/sbin/nginx包管理器安装(如 Ubuntu 的apt install nginx、CentOS 的yum install nginx),主配置在/etc/nginx/nginx.conf

2. 查看 Nginx 的配置文件加载路径

# 查看Nginx的配置文件路径(最权威的方式)
nginx -t

image

这个命令会输出 Nginx 的配置文件检测结果,例如:

  • 源码安装的输出:nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  • 包管理器安装的输出:nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

2. 配置文件结构

Nginx配置文件采用层级结构,所有指令都包含在不同的“块”(Block)中,核心结构分为3层:

# 1. 全局块:配置影响Nginx全局的参数
user  nginx;                # 运行Nginx的用户和组
worker_processes  auto;     # 工作进程数(建议设为CPU核心数或auto)
error_log  logs/error.log;  # 错误日志路径和级别(debug/info/notice/warn/error/crit)
pid        logs/nginx.pid;  # 进程PID文件路径

# 2. 事件块:配置Nginx与用户的网络连接
events {
    worker_connections  1024;  # 每个工作进程的最大并发连接数
    use epoll;                 # 网络I/O模型(Linux推荐epoll,Windows用io_uring)
    multi_accept on;           # 允许工作进程一次性接受多个连接
}

# 3. HTTP块:配置HTTP服务器的核心参数(包含所有与HTTP相关的配置)
http {
    include       mime.types;          # 引入MIME类型映射文件(定义文件扩展名与类型的对应)
    default_type  application/octet-stream;  # 默认MIME类型(未知文件时使用)

    # 日志格式定义(可自定义,通过log_format指令命名)
    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  logs/access.log  main;  # 访问日志路径,使用main格式

    # 核心性能优化参数
    sendfile        on;  # 启用零拷贝(直接从内核缓冲区发送文件,减少IO开销)
    tcp_nopush      on;  # 配合sendfile使用,减少TCP数据包数量
    tcp_nodelay     on;  # 禁用Nagle算法,减少延迟(适合实时场景)
    keepalive_timeout  65;  # 长连接超时时间(客户端与服务器保持连接的时间)

    # 引入虚拟主机配置(推荐将不同站点的配置拆分到子文件)
    include /usr/local/nginx/conf/conf.d/*.conf;

    # 4. 虚拟主机块(Server块):一个Server对应一个站点/域名
    server {
        listen       80;  # 监听端口(默认80,HTTPS用443)
        server_name  www.example.com example.com;  # 绑定的域名(多个域名用空格分隔)
        root         /usr/local/nginx/html/example;  # 站点根目录(文件存放路径)
        index        index.html index.htm;  # 默认首页文件(优先级从左到右)

        # 5. 路由块(Location块):匹配请求路径,配置特定路径的规则
        location / {
            # 路径匹配时的处理(如转发、缓存、权限控制等)
            try_files $uri $uri/ /index.html;  # 尝试访问文件→目录→跳转index.html(适合SPA应用)
        }

        # 匹配静态资源路径(如图片、CSS、JS)
        location ~* \.(jpg|jpeg|png|gif|css|js)$ {
            expires 30d;  # 静态资源缓存30天(减少重复请求)
            add_header Cache-Control "public, max-age=2592000";  # 缓存控制头
        }
    }
}

3. 配置语法规则

  1. 指令格式指令名 参数;(指令名与参数用空格分隔,末尾必须加;,否则报错)

  2. 块指令:指令名后带{},内部可嵌套其他指令(如events {}http {}server {}

  3. 注释# 注释内容(单行注释,无多行注释)

  4. 变量:以$开头,如$remote_addr(客户端IP)、$request(请求行)、$status(响应状态码)

  5. 匹配优先级(Location块):

    匹配符号 含义 优先级 示例
    = 精确匹配路径 最高 location = /login {}
    ^~ 前缀匹配(不正则) 次高 location ^~ /admin {}
    ~/~* 正则匹配(区分大小写,*不区分) location ~* \.html {}
    无符号 普通前缀匹配 最低 location /api {}

二、核心模块配置详解

Nginx的功能通过“模块”实现,核心模块的配置直接影响服务性能和功能,以下是常用模块的关键配置。

1. 全局与事件模块(性能基础)

全局块核心指令

image

指令 作用 推荐配置
user 指定运行Nginx的用户和组(避免用root,降低安全风险) user nginx nginx;
worker_processes 工作进程数(与CPU核心数一致,或设为auto自动匹配) worker_processes auto;
worker_cpu_affinity 绑定工作进程到指定CPU核心(减少进程切换开销) worker_cpu_affinity 0001 0010 0100 1000;(4核心)
error_log 错误日志路径和级别(生产环境建议用warnerror,避免日志过大) error_log logs/error.log warn;
pid 进程PID文件路径 /run/nginx.pid

2. events - 事件块核心指令

image

指令 作用 推荐配置
worker_connections 每个工作进程的最大并发连接数(需结合系统ulimit限制) worker_connections 10240;(高并发场景可设更高)
use 指定网络I/O模型(Linux推荐epoll,FreeBSD用kqueue use epoll;
multi_accept 允许工作进程一次性接受所有待处理连接(提升并发效率) multi_accept on;
accept_mutex连接接受锁) 控制多个工作进程竞争接受新连接的互斥锁,避免 “惊群效应”(多个进程被唤醒但只有一个能处理连接)。默认开启 注意:在新版 Nginx 中,accept_mutex 已被更精细的 accept_mutex_delay 替代。

3. HTTP模块(Web服务核心)

1)MIME类型配置

mime.types文件定义了文件扩展名与HTTP响应头Content-Type的对应关系(如.html对应text/html),确保浏览器正确解析文件:

include mime.types;  # 必须引入,否则无法正确识别静态文件类型
default_type application/octet-stream;  # 未知文件类型默认用二进制流(避免解析错误)

image

2)日志配置

通过log_format自定义日志格式,access_log指定日志输出路径,常用变量说明:

  • $remote_addr:客户端IP地址
  • $remote_user:客户端认证用户名(无则为-
  • $time_local:服务器本地时间(格式:dd/Mon/YYYY:HH:MM:SS +0800
  • $request:请求行(如GET /index.html HTTP/1.1
  • $status:HTTP响应状态码(如200、404、502)
  • $http_referer:Referer头(请求来源页面)
  • $http_user_agent:User-Agent头(客户端浏览器/设备信息)
  • $http_x_forwarded_for:代理后的真实客户端IP(反向代理场景需配置)

默认格式:

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;

定义名为 main 的日志格式模板

日志路径:/var/log/nginx/access.log(Linux 标准路径)

使用 main 格式(只是一个标识符

image

示例:定义JSON格式日志(便于日志分析工具解析)

log_format json_log '{"remote_addr":"$remote_addr","time_local":"$time_local","request":"$request","status":$status,"body_bytes_sent":$body_bytes_sent,"http_referer":"$http_referer","http_user_agent":"$http_user_agent"}';
access_log logs/access_json.log json_log;

3)性能优化配置

指令 作用 推荐配置
sendfile 启用零拷贝(内核直接将文件数据发送到网卡,跳过用户态→内核态拷贝) sendfile on;
tcp_nopush 合并TCP数据包(减少网络传输次数,适合大文件传输) tcp_nopush on;
tcp_nodelay 禁用Nagle算法(减少小数据包延迟,适合实时通信如WebSocket) tcp_nodelay on;
keepalive_timeout 长连接超时时间(客户端与服务器保持连接,避免重复握手) keepalive_timeout 65;
keepalive_requests 单个长连接可处理的最大请求数 10000(高并发场景)
client_max_body_size 限制客户端请求体最大尺寸(防止大文件上传攻击,默认1m) client_max_body_size 10m;(根据业务调整)
client_header_timeout 读取客户端请求头的超时时间 10s
client_body_timeout 读取客户端请求体的超时时间 10s
send_timeout 向客户端发送响应的超时时间 10s
http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    keepalive_requests 10000;
    client_header_timeout 10s;
    client_body_timeout 10s;
    send_timeout 10s;
}

keeplive_timeout 示例:

http {
    keepalive_timeout 65;  # 65秒后关闭空闲连接
    keepalive_timeout 65 60;  # 65秒超时,响应头中 Keep-Alive: timeout=60
}
客户端 ──请求1──> NGINX ──响应1──> 客户端
        (连接保持空闲,等待下一个请求)
        ⏱️ ←── keepalive_timeout 开始计时 ──→
        如果超时前没有新请求,则关闭连接

send_timeout

server {
    send_timeout 10s;
    
    location /download {
        # 下载大文件
        # 如果客户端接收速度 < 文件大小/10s,连接会被关闭
    }
    
    location /api {
        # API响应很小,几乎不会触发
        # 但如果客户端网络极差,10秒内没收完响应也会断开
    }
}
客户端 ──请求──> NGINX
                  ↓
             生成响应数据
                  ↓
          开始向客户端发送数据
                  ⏱️ ←── send_timeout 开始计时 ──→
          如果数据发送太慢,则中断连接

完整请求处理流程

1. 客户端建立连接
2. 发送HTTP请求       ← proxy_read_timeout(读取请求超时)
3. NGINX处理请求      ← 应用处理时间
4. 开始发送响应数据   ← send_timeout(开始计时!)
5. 响应完成
6. 连接进入空闲状态   ← keepalive_timeout(开始计时!)
7. 超时或新请求

4) gzip

http {
    gzip on;                      # 开启 gzip 压缩
    gzip_vary on;                 # 发送 Vary: Accept-Encoding 头
    gzip_min_length 1k;           # 仅压缩大于 1k 的文件
    gzip_buffers 4 16k;           # 压缩缓冲区大小
    gzip_http_version 1.1;        # 支持的 HTTP 版本
    gzip_comp_level 6;            # 压缩级别(1-9,越高压缩率越高,消耗 CPU 越多)
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 需压缩的文件类型
}

5)静态文件缓存(通过响应头设置客户端缓存)

http {
    # 定义缓存策略
    map $sent_http_content_type $expires {
        default                    off;
        text/html                  epoch;
        text/css                   max;
        application/javascript     max;
        image/png                  max;
        image/jpg                  max;
    }

    expires $expires; # 应用缓存策略
}

6)上游服务器(upstream)- 负载均衡

upstream 块用于定义后端服务器集群,实现负载均衡,是反向代理的核心配置。

http {
    # 定义上游集群
    upstream backend {
        # 负载均衡策略:默认轮询(可选:weight 权重、ip_hash 按 IP 哈希、fair 按响应时间、url_hash 按 URL 哈希)
        server 192.168.1.100:8080 weight=5; # 权重 5,被选中概率更高
        server 192.168.1.101:8080 weight=3;
        server 192.168.1.102:8080 backup; # 备份服务器(主服务器都挂了才启用)
        server 192.168.1.103:8080 down; # 下线服务器

        # 可选配置
        ip_hash; # 按客户端 IP 哈希,保证同一客户端始终访问同一服务器(解决会话保持问题)
        keepalive 32; # 保持与后端的长连接数
    }

    # 虚拟主机中使用
    server {
        listen 80;
        server_name example.com;

        location /api/ {
            proxy_pass http://backend; # 转发到上游集群
        }
    }
}

4. 虚拟主机(Server块)配置

一个server块对应一个独立的站点,可通过listenserver_name区分不同站点,支持基于“端口”和“域名”的虚拟主机。

示例1:基于域名的虚拟主机(同一端口,不同域名)

# 站点1:www.example.com
server {
    listen 80;
    server_name www.example.com;  # 绑定域名
    root /usr/local/nginx/html/example1;  # 站点1根目录
    index index.html;

    # 访问日志(单独记录该站点日志)
    access_log logs/example1_access.log main;
}

# 站点2:www.test.com
server {
    listen 80;
    server_name www.test.com;  # 绑定另一个域名
    root /usr/local/nginx/html/example2;  # 站点2根目录
    index index.html;

    access_log logs/example2_access.log main;
}

示例2:基于端口的虚拟主机(同一域名,不同端口)

# 端口80:HTTP服务
server {
    listen 80;
    server_name www.example.com;
    root /usr/local/nginx/html/http;
    index index.html;
}

# 端口8080:另一个服务(如管理后台)
server {
    listen 8080;
    server_name www.example.com;
    root /usr/local/nginx/html/admin;
    index login.html;

    # 限制访问IP(仅允许192.168.1.0/24网段访问管理后台)
    allow 192.168.1.0/24;
    deny all;
}

5. 路由(Location块)配置

location块用于匹配请求路径,实现路径级别的精准控制,常见场景包括静态资源处理、反向代理、权限控制等。

匹配规则优先级

  1. =:精确匹配(最高优先级),如 location = / 仅匹配 /
  2. ^~:前缀匹配,停止后续正则匹配,如 location ^~ /static/
  3. ~/~*:正则匹配(区分大小写 / 不区分大小写),如 location ~ \.php$
  4. 普通前缀匹配(最低优先级),如 location /api/
server {
    listen 80;
    server_name example.com;

    # 精确匹配根路径
    location = / {
        root /usr/share/nginx/html;
        index index.html;
    }

    # 前缀匹配静态资源,停止正则匹配
    location ^~ /static/ {
        root /usr/share/nginx/html;
        expires max; # 客户端长期缓存
    }

    # 正则匹配 PHP 文件(反向代理到 PHP-FPM)
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 普通前缀匹配,反向代理 API
    location /api/ {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

示例1:静态资源缓存(图片、CSS、JS)

# 匹配所有后缀为jpg/jpeg/png/gif/css/js的请求(不区分大小写)
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
    root /usr/local/nginx/html/static;  # 静态资源根目录
    expires 7d;  # 浏览器缓存7天
    add_header Cache-Control "public, max-age=604800";  # 缓存控制(7天=604800秒)
    add_header Access-Control-Allow-Origin *;  # 允许跨域访问(静态资源常用)
}

示例2:反向代理(将请求转发到后端服务)

反向代理是Nginx的核心功能之一,可将客户端请求转发到后端Tomcat、Node.js、Python等服务,实现“前端Nginx+后端服务”的架构。

server {
    listen 80;
    server_name api.example.com;  # 接口域名

    # 匹配所有请求,转发到后端Node.js服务(127.0.0.1:3000)
    location / {
        proxy_pass http://127.0.0.1:3000;  # 后端服务地址(必须加http://)
        proxy_set_header Host $host;  # 传递Host头(后端需根据Host判断站点)
        proxy_set_header X-Real-IP $remote_addr;  # 传递真实客户端IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 传递代理链IP
        proxy_set_header X-Forwarded-Proto $scheme;  # 传递协议(http/https)
    }
}

示例3:URL重写(Rewrite)

通过rewrite指令修改请求URL,实现跳转、路径替换等功能,语法:rewrite 匹配规则 目标路径 标记;
常见标记:

  • last:执行完当前rewrite后,重新匹配location
  • break:执行完当前rewrite后,停止后续rewrite
  • redirect:临时重定向(302状态码)
  • permanent:永久重定向(301状态码)

示例:HTTP跳转HTTPS(强制HTTPS访问)

server {
    listen 80;
    server_name www.example.com;

    # 所有HTTP请求重定向到HTTPS(301永久重定向)
    rewrite ^(.*)$ https://$server_name$1 permanent;
}

6. HTTPS配置(SSL/TLS)

HTTPS需配置SSL证书(可从Let's Encrypt免费申请),监听443端口,核心指令包括ssl_certificate(证书路径)、ssl_certificate_key(私钥路径)。

示例:HTTPS站点配置

server {
    listen 443 ssl;  # 监听443端口,启用SSL
    server_name www.example.com;

    # SSL证书配置(替换为你的证书路径)
    ssl_certificate /usr/local/nginx/conf/ssl/www.example.com.crt;  # 公钥证书
    ssl_certificate_key /usr/local/nginx/conf/ssl/www.example.com.key;  # 私钥

    # SSL优化配置(提升安全性和性能)
    ssl_protocols TLSv1.2 TLSv1.3;  # 仅启用安全的TLS协议(禁用SSLv3、TLSv1.0/1.1)
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;  # 安全的加密套件
    ssl_prefer_server_ciphers on;  # 优先使用服务器端的加密套件
    ssl_session_cache shared:SSL:10m;  # SSL会话缓存(减少重复握手)
    ssl_session_timeout 10m;  # SSL会话超时时间

    # 站点根目录和首页
    root /usr/local/nginx/html/https;
    index index.html;
}

三、常见场景配置示例

1. 负载均衡(反向代理多后端服务)

通过upstream指令定义后端服务集群,Nginx自动将请求分发到不同后端,实现负载均衡和高可用。

# 1. 定义后端服务集群(upstream块需放在http块内)
upstream backend_servers {
    server 192.168.1.100:8080 weight=5;  # 权重5(接收50%请求)
    server 192.168.1.101:8080 weight=3;  # 权重3(接收30%请求)
    server 192.168.1.102:8080 backup;    # 备用节点(主节点故障时启用)
    # server 192.168.1.103:8080 down;    # 下线节点(不接收请求)
}

# 2. 虚拟主机配置(转发请求到upstream)
server {
    listen 80;
    server_name www.example.com;

    location / {
        proxy_pass http://backend_servers;  # 转发到后端集群
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;

        # 健康检查(可选,需启用ngx_http_upstream_module)
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    }
}

负载均衡策略(默认是轮询,可通过upstream指令指定):

  • 轮询:默认,按顺序分发请求(权重可调整)

    upstream backend {
        # 默认就是轮询
        server 10.0.0.1:8080;
        server 10.0.0.2:8080;
    }
    
  • ip_hash:按客户端IP哈希分配(同一IP始终访问同一后端,适合会话保持)

    upstream backend {
        ip_hash;  # 基于客户端IP哈希
        server 10.0.0.1:8080;
        server 10.0.0.2:8080;
    }
    
  • least_conn:优先分发到连接数最少的后端(适合后端性能不均场景)

    upstream backend {
        least_conn;  # 选择当前连接数最少的服务器
        server 10.0.0.1:8080;
        server 10.0.0.2:8080;
    }
    
  • 更多服务器参数

    upstream backend {
        # 备份服务器(主服务器都宕机时才使用)
        server 10.0.0.1:8080;
        server 10.0.0.2:8080 backup;
        
        # 临时下线(不接收新连接,但已有连接继续处理)
        server 10.0.0.3:8080 down;
        
        # 慢启动(商业版)
        server 10.0.0.4:8080 weight=5 slow_start=30s;
    }
    

2. 静态网站部署(SPA应用如Vue/React)

SPA(单页应用)只有一个index.html,所有路由由前端控制,需配置try_files确保刷新页面不404。

server {
    listen 80;
    server_name spa.example.com;
    root /usr/local/nginx/html/spa;  # SPA打包后的dist目录
    index index.html;

    location / {
        # 尝试访问请求的文件→请求的目录→跳转index.html(前端路由接管)
        try_files $uri $uri/ /index.html;
    }

    # 静态资源缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }
}

下面我找了个VUE的项目来测试

server {
    listen 8080;
    server_name localhost; # 可替换为你的域名(如 registry.example.com)
    
    root /usr/local/nginx/vue3-admin8080; # 站点根目录(文件存放路径)
    index index.html;                     # 默认首页文件(优先级从左到右)
    

    # 反向代理到 Docker 容器(核心修改:用宿主机映射地址)
    location / {
      try_files $uri $uri/ /index.html;  # 这里配置就可以了
    }
}

image

3. 防盗链配置(防止静态资源被其他网站盗用)

通过valid_referers指令限制请求的Referer(来源页面),仅允许指定域名引用资源。

location ~* \.(jpg|jpeg|png|gif|mp4)$ {
    root /usr/local/nginx/html/static;

    # 允许的Referer(none:直接访问,blocked:Referer为空,*.example.com:example.com的子域名)
    valid_referers none blocked *.example.com example.com;

    # 如果Referer不在允许列表,返回403禁止访问(或返回自定义图片)
    if ($invalid_referer) {
        return 403;
        # rewrite ^/ /static/403.png last;  # 可选:返回防盗链图片
    }
}

四、配置验证与重载

修改Nginx配置后,必须验证配置语法并重载服务,避免配置错误导致服务中断。

1. 验证配置语法

# 进入Nginx sbin目录(你的路径是/usr/local/nginx/sbin)
cd /usr/local/nginx/sbin

# 验证配置文件语法(无报错则表示语法正确)
./nginx -t

成功输出示例:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2. 重载配置(不中断服务)

# 重载配置(服务不会重启,新请求将使用新配置)
./nginx -s reload

3. 其他常用命令

./nginx          # 启动Nginx
./nginx -s stop  # 强制停止Nginx(立即终止进程)
./nginx -s quit  # 优雅停止Nginx(处理完当前请求后终止)
./nginx -v       # 查看Nginx版本(如nginx version: nginx/1.28.0)
./nginx -V       # 查看Nginx版本及编译参数(如--prefix、--with-http_ssl_module)

五、常见配置问题排查

  1. 403 Forbidden

    • 站点根目录权限不足(Nginx用户无读权限,需执行chown -R nginx:nginx /usr/local/nginx/html
    • index指令指定的首页文件不存在
    • 防盗链配置中的$invalid_referer触发
  2. 404 Not Found

    • root指令路径错误(文件实际路径与配置不符)
    • SPA应用未配置try_files $uri $uri/ /index.html(刷新页面时404)
  3. 502 Bad Gateway

    • 反向代理的后端服务未启动(如proxy_pass指向的127.0.0.1:3000未运行)
    • 后端服务端口被防火墙拦截(需开放端口,如firewall-cmd --add-port=3000/tcp --permanent
  4. HTTPS证书错误

    • 证书或私钥路径错误
    • 证书与域名不匹配(如用www.example.com的证书绑定test.example.com)
    • 未启用SSL模块(编译时需加--with-http_ssl_module,可通过./nginx -V查看)

通过以上内容,可掌握Nginx配置的核心逻辑和常见场景用法。实际应用中,需根据业务需求(如高并发、HTTPS、负载均衡)灵活调整配置,同时结合日志分析和性能监控(如nginx-status模块)优化服务。

posted @ 2025-09-09 19:46  【唐】三三  阅读(1638)  评论(0)    收藏  举报