网站 502 Bad Gateway 最全排查指南(Nginx+PHP)

iT日记 建站运维

网站 502 Bad Gateway 最全排查指南(Nginx+PHP)-第1张图片-iT日记

502 Bad Gateway 是运维和站长最常遇到的故障之一,尤其在 Nginx+PHP 环境下极为普遍。出现 502 本质只有一个原因:Nginx 正常运行,但无法正常拿到 PHP 的返回结果。

本文整理一套从简单到复杂、新手也能一步步照做的排查方案,覆盖 99% 的 502 场景,看完就能自己解决问题。

一、先判断:是真故障还是临时波动

1、刷新页面,看是否偶尔正常

2、用其他浏览器 / 手机流量访问,排除本地网络问题

3、看是否只有个别页面 502,还是全站 502

偶尔出现 → 多半是 PHP 繁忙、超时、请求阻塞

全站一直 502 → PHP 服务挂了或配置严重错误

二、最常见原因:PHP-FPM 未启动或挂了

1. 检查 PHP 运行状态

service php-fpm status

或宝塔里看:软件商店 → PHP → 是否运行

2. 启动 / 重启 PHP

service php-fpm start
service php-fpm restart

如果启动失败,基本是配置错误、内存不足、端口被占用。

三、PHP 进程满了,请求排队导致 502

这是最典型、最容易被忽视的 502 原因。

表现:

网站访问量一高就 502

晚上 / 高峰必出 502

重启 PHP 暂时好一会儿

解决:

1、进入 PHP 设置 → 配置文件

2、调高以下参数(根据服务器配置适当加大)

pm.max_children = 20
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 1000

3、重启 PHP-FPM

四、请求超时,PHP 执行太慢

Nginx 等不及 PHP 返回,直接返回 502。

需要同时改两处:

1. Nginx 超时配置

proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 60;
fastcgi_read_timeout 60;

2. PHP 最大执行时间

max_execution_time = 60
max_input_time = 60

改完重载 Nginx + 重启 PHP。

五、PHP 监听端口 / 路径配置错误

Nginx 找不到 PHP 入口,直接 502。

检查两点:

1、PHP 监听配置

listen = /tmp/php-cgi-81.sock
# 或 listen = 127.0.0.1:9000

2、网站 Nginx 配置里必须对应一致

fastcgi_pass unix:/tmp/php-cgi-81.sock;
# 或 fastcgi_pass 127.0.0.1:9000;

不一致就 502。

六、服务器内存不足,PHP 被系统杀死

表现:

top 看内存几乎 100%

dmesg 看到 Out of memory, kill process

PHP 频繁自动挂掉

解决:

1、关闭不必要插件、主题

2、降低 PHP 进程数

3、增加服务器内存或开启 SWAP

4、清理缓存、关闭内存占用大的功能

七、程序死循环、卡死,导致 PHP 阻塞

典型场景:

某个特定页面访问就 502

其他页面正常

一访问该页面 CPU 瞬间飙升

排查:

1、查看 PHP 慢日志

2、关闭最近新安装的插件 / 功能

3、检查代码里是否有无限循环、大循环查询数据库

八、磁盘满了,PHP 无法写入日志 / 会话

磁盘 100% 时:

Nginx 能运行

PHP 无法写日志、session、缓存

直接 502

解决:

df -h

看是否使用率 100%,清理日志、备份即可恢复。

九、防火墙、安全组拦截了 PHP 端口

极少出现,但也会发生:

安全组限制了 9000 端口本地访问

防火墙禁用了 Unix Socket 权限

简单验证:直接关闭宝塔防火墙临时测试。

十、一键排查总结(最快思路)

按这个顺序查,1 分钟定位 502:

1、看 PHP 是否启动

2、看磁盘是否满了

3、看内存是否爆了

4、看 PHP 进程数是否足够

5、看是否某个页面卡死

6、看超时配置是否太短

7、看 Nginx 与 PHP 监听配置是否一致

标签: 502 Bad Gateway 解决 Nginx 502 PHP-FPM 502 网站 502 原因 宝塔 502 修复