2026-08-22
先给结论:502通常表示网关从上游服务收到了无效响应,504通常表示网关等待上游响应超时。两者都不是“直接加带宽”就能解决的问题。正确顺序是先确认故障范围,再检查Nginx错误日志、上游进程、Socket或端口、CPU/内存/磁盘和数据库,最后才根据证据调整超时或服务器配置。
本文更新时间:2026年8月22日。适用于Nginx反向代理PHP-FPM、Node.js、Java或其他Web应用的常见部署。线上修改前应备份配置,并保留可快速回滚的旧版本。
| 现象 | 更常见的含义 | 优先检查 |
|---|---|---|
| 502 Bad Gateway | 上游拒绝连接、进程退出、Socket路径错误,或返回了无效响应 | Nginx error.log、上游服务状态、监听端口与Socket权限 |
| 504 Gateway Timeout | 已经连接或尝试连接上游,但在允许时间内没有得到响应 | 慢SQL、外部API、任务阻塞、连接池、proxy_read_timeout |
| 偶发502/504 | 峰值时资源或工作进程不足,也可能是发布时短暂重启 | 错误发生时间对应的CPU、内存、I/O、连接数和发布记录 |
Nginx配置的fastcgi_pass可能指向Unix Socket,也可能指向127.0.0.1端口。应用升级、PHP版本切换或面板重建配置后,实际监听路径可能变化。应同时核对Nginx生效配置和PHP-FPM pool配置,不能只看文件名猜测。
当PHP-FPM工作进程全部繁忙,请求会排队;内存紧张时进程还可能被OOM Killer终止。此时直接提高pm.max_children可能让内存更快耗尽。应先测量单个进程实际RSS、峰值并发和可用内存,再计算安全上限。
Nginx官方文档分别定义了连接上游和读取上游响应的超时。若慢SQL需要90秒,把读取超时从60秒改为120秒只会让用户等待更久。只有确认业务确实需要长任务,并且异步化暂不可行时,才应调整超时并监控影响。
如果根因是容量不足,可结合煜钧云云服务器和企业网站服务器配置选择指南重新做压测;若只在大文件或高峰期出现,也可先阅读云服务器带宽计算指南。
重启可能临时恢复服务,但不能证明根因已经解决。若问题来自内存泄漏、慢SQL、错误Socket或进程数不足,故障会再次出现。应在重启前后保存日志、进程和资源证据。
不一定。低配置只是可能性之一,数据库锁、外部接口超时、DNS问题和代码死循环也会导致504。应根据请求链路逐段定位。