SorryToPerson logo
返回
Nginx2026-04-15·8 分钟

Nginx 常见配置问题与经典坑

总结 Nginx 生产环境中容易踩坑的配置、调试误区和排查方法。

Nginx 常见配置问题与经典坑

1. location 匹配不生效

  • 正则匹配的优先级高于前缀匹配。
  • 使用 ^~ 可以阻止正则继续匹配。
nginx
location ^~ /static/ {
  ...
}
location ~* /static/.*\.php$ {
  ...
}

2. 反向代理路径缺少尾部斜杠

  • proxy_pass 后未加斜杠会保留请求 URI。
nginx
proxy_pass http://backend/; # 追加斜杠通常更符合预期

3. try_files 用法错误

  • try_files 必须以 fallback 结尾。
nginx
try_files $uri $uri/ /index.html;

4. 证书重载后日志句柄

  • 日志切割后必须执行 nginx -s reopen
  • 直接 nginx -s reload 也会重新打开日志,但 reopen 更精确。

5. 过度使用 if

  • if 指令易导致配置逻辑混乱。
  • 尽量使用 maprewritelocation 分支替代。

6. gzip 与缓存头冲突

  • 设置 gzip 时仍需对静态资源设置合理 Cache-Control
  • etagexpires 结合使用,提高缓存命中率。

7. server_name 与默认 server

  • server_name _; 不等于 default_server
  • 使用 listen 80 default_server; 明确指定默认虚拟主机。

8. upstream max_failsfail_timeout

  • max_fails=0 表示不做失败计数。
  • 负载均衡配置不当会导致请求持续命中不可用后端。

9. proxy_buffering 行为

  • 对响应大、慢后端时可关闭缓冲:
nginx
proxy_buffering off;
  • 但对多数场景,开启缓冲有助于减少后端压力。

10. 添加配置后忘记检查语法

  • 每次修改后都应执行:
bash
nginx -t
  • 只有语法检查通过,才能安全重载配置。
Nginx问题排查运维