502 不一定是后端崩了:反向代理报错的排查顺序

举报
1swei 发表于 2026/11/04 09:36:42 2026/11/04
【摘要】 看到浏览器里躺着个 502 Bad Gateway,很多人第一反应是后端挂了。其实 502 的字面意思是"网关拿到了一个无效的上游响应"——问题往往在网关和上游之间这段链路上。我常用的排查顺序是这样的:第一步:看网关日志的 upstream_statusNginx 的 $upstream_status 和 $upstream_response_time 是关键。如果 upstream_sta...

看到浏览器里躺着个 502 Bad Gateway,很多人第一反应是后端挂了。其实 502 的字面意思是"网关拿到了一个无效的上游响应"——问题往往在网关和上游之间这段链路上。我常用的排查顺序是这样的:

第一步:看网关日志的 upstream_status
Nginx 的 $upstream_status 和 $upstream_response_time 是关键。如果 upstream_status 是空的,说明网关根本没连上上游(连接被拒绝、超时、DNS 解析失败),排查方向是网络层;如果有状态码但和业务预期不符,方向是上游应用层。先看日志再动手,能省掉一半瞎猜。

第二步:从网关机器直接 curl 上游
绕开网关,直接在网关所在机器上 curl -v 上游地址。这一步能快速区分是"上游服务本身有问题"还是"网关和上游之间的网络有问题"。比如容器场景里经常遇到的坑:网关容器重启后 IP 变化,但 upstream 写死了旧 IP,curl 直接连会立刻暴露问题。

第三步:查三个经典配置坑

  1. proxy_pass 后面斜杠的语义区别:proxy_pass http://backend/; 和 proxy_pass http://backend; 拼接路径的方式完全不同,写错一个斜杠就会 502 或 404。
  2. 超时参数:上游接口变慢、但网关 proxy_read_timeout 还是默认 60 秒,慢接口会被网关主动掐断,表现为 502。看 $upstream_response_time 接近超时阈值就是信号。
  3. upstream 健康检查缺失:节点挂了网关还继续转发,短时间出现零散 502。加个主动健康检查,或者至少确认负载均衡的失败重试配置生效。

第四步:看资源与连接数
上游服务"看着活着"但连不上,常是因为连接打满了:netstat -s 看 ListenOverflows、看应用线程池/连接池是否耗尽、看网关到上游的 keepalive 配置。这种 502 往往是偶发的,压测流量一上来就复现。

一句话总结
502 的排查顺序应该是:日志定位层级(网络层还是应用层)→ 绕开网关直连验证 → 配置坑 → 资源连接数。从外向内,一步一证据,别一上来就重启后端。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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