Nginx出现502多数是属于后端的问题,后期就是PHP的问题,在php服务当中,有两个参数非常的重要:max_requestst 和 max_children,具体的原因必须要查看日志才可以弄明白!
Nginx 502 Bad Gateway出现的原因:
FastCGI进程是否已经启动,查看是否启动了php-fpm服务。
ps aux | grep php
FastCGI worker进程数是否不够,判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少。
netstat -anpo | grep “php-cgi” | wc -l
FastCGI执行时间过长,根据实际情况调高以下参数值。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
FastCGI Buffer不够,Nginx 和 Apache 一样,有前端缓冲限制,可以调整缓冲参数。
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
Nginx 502 Bad Gateway 其它原因
出现502的情况太多了,远远不只是博主所说的这几种!这几种只能说是最常用的吧!具体的原因一定要去查看服务器的日志。
例如:你服务器目前的配置支撑不了你现有的业务。我有一个朋友服务器是4核8G的,经常一会出现 502 Bad Gatewa,又一会正常,CPU和内存经常爆满接近100%,负载也接近4,最后,配置升级成8核16G后变就变正常了。
Nginx 502 bad gateway问题怎么解决?
接下来说下如何通过查看日志来解决502 Bad Gateway
查看nginx日志
既然是nginx报错,首先我们就去查看 Nginx 的日志;执行如下命令:
vim /fujieace/nginx/logs/error.log
日志没有报什么错,一切正常,显然不是 Nginx 出的问题。
查看php日志
或许不同的环境,路径或许不一同,但是很类似,继续执行 Linux 命令:
vim /fujieace/php/var/log/php-fpm.log
结果发现有很多错误,例如下面,日志或许还会有其它的报错,也可以留言,博主免费帮助解决!
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it;
因为博主用的纯手工源码安装php,因此它默认的进程是5个,我们需要做一定的修改,网上很多 PHP一键安装包 它默认的个数或许不一样,像 LNMP一键安装包 它默认应该是至少是10个。