toolfree

502 Bad Gateway

502 代表什么、和 503、504 差在哪里,以及当你自己的服务器回 502 时该检查什么。

在你的浏览器中运行

点一下代码即可复制。

5xx · 服务器错误

请求本身没有问题,是服务器没能处理好。

代码意义
Internal Server Error出了问题,而服务器说不出更具体的原因。
Not Implemented服务器根本不支持这个要求。
Bad Gateway代理服务器向上游询问,却拿到一个无法使用的响应。上游有响应,只是回得不对。504 是上游没有在时限内响应,503 则是这台服务器自己决定不处理。
Service Unavailable暂时不提供服务,可能是超载或正在维护。
Gateway Timeout代理服务器等待上游响应,最后放弃了。

中间那台机器拿到了一个坏答案

502 来自一台不是原本该回答你的机器。某个代理服务器、负载均衡器或 CDN 把你的请求往上游 送,收到了回应,却看不懂那是什么。

所以 502 从来就不是在讲你问的那台服务器,而是在讲它后面两台机器之间的对话——这正是为什么 它从外面完全看不出原因,在日志里却一目了然。

502、503、504 是三种不同的失败

代码发生了什么
502上游回了但回得不对——格式错误,或连线在回应中途断掉
503这台服务器自己决定不处理——超载,或正在维护
504上游没有在时限内回应

在你自己的服务里把这三个用对,比想像中重要:带着 Retry-After 头部的 503 能明确告诉客户端 什么时候可以再来,而 502 什么有用的信息都没给。

如果是别人的网站出现 502

你能做的很少,而且几乎绝不是你这端的问题。过一分钟再重新整理。如果换网络、换设备都还是这样, 那就是他们的问题。

有一件事值得排除一次:你自己这边过期的缓存转址,或是公司的代理服务器,也可能产生一个只有你 看得到的 502。

如果是你自己的服务器在回 502

常见原因大致依序如下:

在这种情况下,应用程序的日志几乎总是比代理的日志更有用。代理只知道那个答案不能用,应用程序 才知道为什么。