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