Nginx 502 排查顺序:从 upstream 到 fd 上限

举报
yd_217517564 发表于 2026/10/31 01:48:52 2026/10/31
【摘要】 Nginx 502 排查顺序:从 upstream 到 fd 上限502 的含义只有一句:Nginx 作为反向代理,没能从上游拿到合法响应。所以排查方向永远在上游,而不是 Nginx 的配置文件写错了什么。 第一步:确认是全部 502 还是部分 502tail -f /var/log/nginx/error.log 里看关键行:connect() failed (111: Connecti...

Nginx 502 排查顺序:从 upstream 到 fd 上限

502 的含义只有一句:Nginx 作为反向代理,没能从上游拿到合法响应。所以排查方向永远在上游,而不是 Nginx 的配置文件写错了什么。

第一步:确认是全部 502 还是部分 502

tail -f /var/log/nginx/error.log 里看关键行:

connect() failed (111: Connection refused) while connecting to upstream
upstream prematurely closed connection while reading response header
no live upstreams while connecting to upstream
  • Connection refused:上游进程没起,或监听地址不对(127.0.0.1:8080 vs 0.0.0.0:8080 是最常见的坑)
  • prematurely closed:进程活着但处理请求时崩了,去看应用日志
  • no live upstreams:健康检查把后端全部摘掉了

第二步:绕过 Nginx 直接打上游

curl -sv http://127.0.0.1:8080/health
ss -ltnp | grep 8080

如果 curl 正常、通过 Nginx 却 502,问题在 Nginx 的 upstream 配置或网络命名空间;如果 curl 也失败,问题在应用本身。

第三步:看超时设置是否错配

proxy_read_timeout 默认 60s。上游跑一个 90s 的任务,Nginx 会先断开,日志里是 upstream timed out。这类 502 的特征是"偶发、集中在慢请求上"。

location /api/ {
    proxy_connect_timeout 5s;
    proxy_send_timeout 60s;
    proxy_read_timeout 120s;
}

要跟应用的超时对齐,但不要为了消除报错把超时无脑调大——真正的慢查询会在别处爆炸。

第四步:检查文件描述符和连接数

高并发下 502 经常不是超时,而是打不开新连接:

cat /proc/$(pgrep -f 'nginx: worker' | head -1)/limits | grep 'open files'
ss -s

worker 的 worker_connections 与系统 nofile 都要够。worker_rlimit_nofile 要在 nginx.conf 里显式设置,因为 systemd 的 LimitNOFILE 只作用于主进程。

第五步:确认不是上游把连接重置了

如果应用是 Go/Java 这类带连接池的,后端在重启时会 RST 掉存量连接,Nginx 正好复用到这条连接,就会 502。特征是"发布瞬间一小批 502"。解决方式是上游优雅停机(先摘流量、等连接排空),或者 Nginx 侧开启 proxy_next_upstream error timeout,让失败请求换一个后端重试。

一份可复用的检查清单

  1. nginx -t 通过,配置重载成功
  2. ss -ltnp 能看到上游端口,地址族匹配
  3. curl 直连上游返回 200
  4. error.log 里的错误类别与上面的四类对上
  5. 超时、fd、worker_connections 三项与压测结果匹配
  6. 发布窗口是否有集中的 502(说明是优雅停机问题)

按这个顺序走,绝大多数 502 在第三步之前就能定位,不需要改 Nginx 配置。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。