nginx Cheatsheet

Nginx 配置与命令速查表

Nginx 配置与命令一页速查:nginx -t/-s reload/-T 语法测试与重载、location 匹配优先级、proxy_pass 反向代理片段与超时上传限制、access/error 日志排查,改配置和查 502/413 时直接对照。

把 Nginx 最常用的命令、location 匹配规则、反向代理片段和日志排查整理成一页,改配置和查 502 时直接对照。

nginx反向代理location配置

命令与测试

  • nginx -t
    测试配置语法,改完必跑再重载
  • nginx -s reload
    平滑重载配置,不断连接
  • nginx -T
    打印完整生效配置,排查 include 冲突
  • systemctl restart nginx
    完整重启(会断连接),一般用 reload
  • nginx -V
    查看编译参数和已启用模块

location 匹配优先级

  • location = /path
    精确匹配,优先级最高
  • location ^~ /static/
    前缀匹配且命中后不再查正则
  • location ~ \.php$
    区分大小写的正则匹配
  • location ~* \.(jpg|png)$
    不区分大小写的正则匹配
  • location /path
    普通前缀匹配,优先级最低

反向代理片段

  • proxy_pass http://127.0.0.1:8080;
    转发到后端,注意结尾斜杠影响路径
  • proxy_set_header Host $host;
    透传原始 Host 头
  • proxy_set_header X-Real-IP $remote_addr;
    透传真实客户端 IP
  • proxy_read_timeout 60s;
    后端响应超时,长请求 502 时调大
  • client_max_body_size 50m;
    允许的最大上传体积,413 报错时调大

日志与排查

  • tail -f /var/log/nginx/error.log
    跟踪错误日志,502/504 先看这里
  • tail -f /var/log/nginx/access.log
    跟踪访问日志
  • grep " 502 " /var/log/nginx/access.log
    筛出 502 请求
  • curl -I http://localhost
    只看响应头,快速验证服务

容易踩的坑

  • proxy_pass 结尾带不带斜杠语义完全不同:带 / 会替换 location 前缀,不带则原样拼接。
  • 改完配置先 nginx -t 再 reload,语法错时 reload 不会生效但旧进程继续跑。
  • 502 先看 error.log:connection refused 是后端没起,timeout 是后端太慢。