造成NGINX 502错误的可能性比较多,将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,希望对各位有所帮助。

 
1.FastCGI worker进程数是否不够
 
通过命令查看服务器上一共开了多少的 php-cgi 进程
ps -fe |grep "php" | grep -v "grep" | wc -l
使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求
netstat -anop | grep "php" | grep -v "grep" | wc -l
接近配置文件中设置的数值,表明worker进程数设置太少
 
2.FastCGI执行时间过长
 
根据实际情况调高以下参数值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
 
3.FastCGI Buffer不够
 
nginx和apache一样,有前端缓冲限制,可以调整缓冲参数
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
 
这个一般你能在日志中看到:upstream sent too big header while reading response header from upstream
意思就是反馈回来的头部信息太大,好多是Firefox浏览时才出现,是它的插件引起的。
 
4.Proxy Buffer不够
 
如果你用了Proxying,试试调整
proxy_buffer_size 16k;
proxy_buffers 4 16k;
 
5.根据服务器硬件条件来修改,不是所有参数一味的改大就行了,多看日志,多google,尽量升级到最新版,一般来说都可以解决的。