扫盲 2026.09.26 23:47 77 次浏览 0 条评论

Nginx 502错误排查方法

Nginx 报 502 说白了就一件事:Nginx 把请求转给了 PHP-FPM,那边没接住。

先翻错误日志,小皮面板一般在 /www/wwwlogs/,Linux 编译装的在 /usr/local/nginx/logs/error.log。

看到 connect() failed (111: Connection refused),就是 PHP-FPM 没跑,或者 sock 路径对不上。面板里去软件商店看 PHP 是不是停着,点重启;命令行走 ps aux | grep php-fpm 看有没有进程。

location ~ \.php$ {
    fastcgi_pass unix:/tmp/php-cgi-74.sock;  # 这个路径必须和 php-fpm.conf 里的 listen 一模一样
    fastcgi_index index.php;
    include fastcgi.conf;
}

如果日志里是 upstream timed out,说明脚本跑太久卡死了。php-fpm.conf 里把 request_terminate_timeout 调大,Nginx 里把 fastcgi_read_timeout 也调大,别一个调一个不调。

还有一种:并发一上来就 502,多半是 pm.max_children 太小,排队排满了。调大点再看。

最后别忘了内存。内存榨干,PHP-FPM 会被系统直接 OOM 干掉,dmesg | grep -i kill 一看就知道,这种只能加内存或者砍进程数。

说点什么 0