nginx 反代配置里那些容易踩的坑
反代配置写错一个字符,表现可能是"部分请求 502"或者"偶发超时",很难查。把常踩的几个记下来。
location 的优先级不是从上往下
nginx 的匹配顺序是:精确匹配 = 最高,其次是前缀匹配里最长的那个,正则 ~ 按出现顺序,最后才是 /。所以别指望靠排版顺序控制行为。
Host 头不传会出事
后端如果按 Host 做路由或生成绝对链接,不传 proxy_set_header Host $host 会拿到 nginx 的默认值。同理,需要真实客户端 IP 就得传 X-Real-IP 和 X-Forwarded-For。
超时是三个,不是两个
除了 proxy_read_timeout 和 proxy_send_timeout,还有 proxy_connect_timeout。后端卡在建连阶段时,只有最后一个能救你。
WebSocket 要显式放行
WS 走的是 HTTP Upgrade,需要传 Upgrade 和 Connection 两个头,而且 proxy_http_version 必须是 1.1——默认的 1.0 不支持升级。
改完先 nginx -t
这个命令能挡住绝大多数低级错误。配置语法错了 nginx 会拒绝 reload,线上服务不受影响;但如果直接 restart 就可能整个挂掉。
← 返回首页