首页/网络/协议速查/502 Bad Gateway 网关错误
HTTP 方法与状态码91 条

502 Bad Gateway 网关错误

作为网关/代理的服务器从上游收到无效响应(或无法连接上游):上游崩溃、端口未监听、协议不匹配都可能触发。

协议速查网络更新于 2026-10-13

502 是什么

502 Bad Gateway 表示作为网关或代理的服务器,从上游服务器收到了无效响应,或者根本无法与上游建立连接。RFC 9110 §15.6.3 的定位很清楚:问题出在网关与上游之间,而不是客户端请求有毛病。最常见的三类根因是后端进程没起来、连到了错误的端口或协议(HTTP 与 HTTPS 混用)、后端崩溃后连接被重置。因此 502 的第一现场永远是网关的错误日志,先读日志再改配置。

基本信息

名称502 Bad Gateway
作用网关无法从上游取得有效响应
规范RFC 9110 §15.6.3
典型根因后端进程退出、端口未监听、协议不匹配、连接被重置
第一现场网关错误日志中的连接失败与上游相关行

典型成因场景

  • 后端服务发布重启期间,网关短暂返回 502
  • 后端监听在回环地址而网关在另一台机器,根本连不上
  • 后端只提供明文 HTTP,网关却配置了加密回源,或相反
  • 动态进程池耗尽,或后端套接字路径配置错误
  • 容器编排中后端未通过就绪检查就被挂上负载均衡

日志定位与后端探测

日志定位与后端探测
grep -E 'connect|upstream|reset|SSL' /var/log/nginx/error.log | tail -20
tail -100 /var/log/nginx/error.log | grep -oE 'Connection refused|upstream timed out|no live upstreams|invalid response' | sort | uniq -c
ss -lntp | grep -E ':(8000|9000|3000)'   # 确认后端进程确实在监听
curl -sv http://127.0.0.1:8000/health   # 在网关所在机器上直接访问后端
nginx -T | grep -nE 'proxy_pass|fastcgi_pass'   # 核对回源地址与协议

日志关键词对应根因

日志关键词含义处置方向
Connection refused端口没人监听拉起后端进程,核对监听地址
upstream sent invalid response协议或响应格式不对检查回源协议与后端输出内容
no live upstreams健康检查全部失败检查后端健康检查与就绪探针
Connection reset by peer后端主动断开或崩溃看后端日志与是否被内存回收
SSL handshake failed网关与后端加密配置不匹配统一回源协议与证书配置
502 与 503 的区别在责任方:502 是网关代理的上游坏了,503 是服务本身主动或被迫暂时不服务(过载、维护)。看到 502 先修上游,看到 503 先看容量与维护开关。
若把 502 错误页交给 CDN 缓存又没有短 TTL 或缓存标签,后端恢复后用户仍会持续看到错误页,必须手动刷新缓存才能恢复。

恢复与预防

  • 发布采用滚动或蓝绿方式,保证任一时刻都有健康实例在承接流量
  • 给网关到上游的连接与读取都设合理超时,避免慢实例把连接池占满
  • 就绪检查与存活检查分开配置,未就绪的实例绝不接入流量
  • 后端监听地址与端口由配置管理统一下发,避免改动之后两边不一致
  • 为错误码建立告警与自定义错误页,不要把网关默认页直接暴露给用户

与相邻错误码的分工

错误码责任方典型动作
502网关与上游之间的连接或响应拉起后端,核对端口与协议
503服务自身过载或处于维护扩容、限流、返回维护页
504上游处理太慢优化慢点,长任务改异步
500应用内部抛出未处理异常修代码,查依赖与配置
502 的排查顺序是先证明上游是否收到请求,再看上游自己的日志与资源占用。跳过这一步直接调大超时或重启网关,只会让故障在更长时间里反复出现。

如何缩短影响时间

  • 把后端启动与预热时间纳入发布流程,实例真正就绪后再切流量,避免发布窗口内的固定报错
  • 错误页与监控告警同时上线:用户看到友好提示,值班同学第一时间收到通知
  • 让网关把状态码与上游地址写进访问日志并保留摘要,事后分析不必重新复现现场

易错点

  • 后端改了监听地址或端口而网关配置没同步,故障表现为全站 502,其实应用本身完全健康
  • 后端明文服务被配成加密回源或反之,日志里是握手失败,前端只看到 502,容易误判为后端崩溃
  • 动态进程池打满后新请求排队超时,网关记为 502 或 504,只看应用日志找不到任何异常
  • 负载均衡健康检查路径配错,健康节点被误摘除,触发大面积 502

数据来源与参考

  • RFC 9110 §15.6.3 502 Bad Gateway

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌