HTTP 502 Bad Gateway

中间人的抱怨:代理或 CDN 询问了真正的服务器,得到的却是无效响应——甚至没有响应。

HTTP 502 是什么意思

HTTP 502 Bad Gateway 来自一个中间层——nginx、负载均衡器、Cloudflare——它将你的请求转发给上游服务器,但收到了无效响应:连接被拒绝、响应过程中崩溃,或者收到的字节无法解析为 HTTP。

被指责的一方几乎从来不是代理本身;真正的原因是它背后的应用服务器宕机、过载或无法访问。

502 错误的常见原因

  • 应用服务器(PHP-FPM、Node、gunicorn 等)崩溃或未在运行。
  • 代理指向了错误的端口/socket,或防火墙阻止了与上游的连接。
  • 上游响应超出了缓冲区限制,或在传输过程中超时。
  • 一次部署在流量仍在处理时重启了后端。
  • 在使用 Cloudflare 等 CDN 时:源服务器已宕机,而边缘节点本身正常。

作为访客该如何处理

  • 一分钟后重新加载——部署期间出现的 502 通常会自行恢复。
  • 如果问题持续出现,请查看该服务的状态页面。

作为开发者该如何修复

  • 检查上游进程是否存活,并正在代理所期望的地址上监听。
  • 查看代理的错误日志——nginx 会明确说明原因(connect() failed、upstream prematurely closed 等)。
  • 核实代理与应用之间的端口、Unix socket 路径和防火墙规则。
  • 添加健康检查,以便负载均衡器不再将流量路由到已失效的实例。

示例响应

HTTP/1.1 502 Bad Gateway
Server: nginx
Content-Type: text/html

<html><body><h1>502 Bad Gateway</h1></body></html>

常见问题

502 和 504 有什么区别?

502 表示上游返回了某种无效响应(或拒绝了连接);504 表示上游在超时时间内根本没有响应。

为什么 Cloudflare 会显示 502?

Cloudflare 的边缘节点无法从你的源站获得有效响应——源站可能已宕机、无法访问,或返回了格式错误的响应。

502 是临时性的吗?

通常是的——部署和重启会导致短暂的 502。持续出现的 502 意味着后端确实宕机或配置有误。