| 特征 | 502 Bad Gateway | 504 Gateway Timeout |
|---|---|---|
| 核心问题 | 响应内容/格式 错误 | 响应时间 过长 |
| 连接状态 | 连接成功,但传输中断 | 连接成功,但传输未完成 |
| 检查方向 | 1. 后端服务是否崩溃? 2. PHP/Java 进程是否挂掉? 3. 后端日志是否有 Fatal Error?4. SSL 证书是否有效? |
1. 后端接口为什么跑得慢? 2. 数据库是否有慢查询? 3. Nginx 超时配置是否合理? 4. 服务器负载是否过高? |
| 日志特征 | 后端日志出现 core dump 或错误栈 | 后端日志显示请求处理时间长,Nginx 日志记录 upstream timed out |
总结
502:后端不会说话(乱说/说错/突然死掉)。
后端服务崩溃:
Nginx 把请求转发给后端(如 PHP-FPM),后端刚处理到一半,程序崩溃了(Segmentation fault),导致连接被中断。
协议错误:
后端返回的 HTTP 响应格式错误(例如缺少必要的 Header,或返回了乱码数据)。
使用 HTTPS 代理时,后端服务器的 SSL 证书过期或无效,导致 SSL 握手失败。
防火墙干扰:
防火墙拦截了后端返回的响应包,导致 Nginx 收到不完整的响应数据(例如包被截断)。
504:后端说得太慢(让我等太久)。
后端处理慢:
后端数据库查询太慢,跑了 10 秒还没返回结果。
后端调用外部 API,但外部 API 没有响应,导致后端线程卡住。
配置问题:
Nginx 的 proxy_read_timeout 设置得太短(默认通常是 60 秒),而后端逻辑确实需要 70 秒。
高并发排队:
后端服务器负载过高,请求在队列里排队,Nginx 等不及队列处理就超时了。