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 意味着后端确实宕机或配置有误。