收集一些和502有关的错误在这里,保留来源地址,建议看来源地址的内容。
502是FastCGI出现问题,所以从FastCGI配置入手。
1.请检查你的FastCGI进程是否启动
2.FastCGI进程不够使用
请通过执行 netstat -anpo | grep “php-cgi” | wc -l 判断,是否接近你启动的FastCGI进程,接近你的设置,表示进程不够
3.执行超时
请把
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
这几项的值调高
4.FastCGI缓冲不够
nginx和apache一样,有前端缓冲限制
请把
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
这几项的值调高
5.Proxy缓冲不够
如果你使用了Proxying,请把
proxy_buffer_size 16k;
proxy_buffers 4 16k;
这几项的值调高
6.https转发配置错误
正确的配置方法
server_name www.server110.com;
location /myproj/repos {
set $fixed_destination $http_destination;
if ( $http_destination ~* ^https(.*)$ )
{
set $fixed_destination http$1;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Destination $fixed_destination;
proxy_pass http://subversion_hosts;
}
7.php脚本执行时间过长
将php-fpm.conf的<value name=”request_terminate_timeout”>0s</value>的0s改成一个时间
===========================================================================
Lnmp一键安装包部署Nginx环境,却发现经常出现 502 Bad Gateway 错误,比如在不停的刷新过程中,时不时就出现一次502错误;
经过本人摸索,终于发现了一个解决方法:
lnmp安装后,Fastcgi 默认的监听端口是这样的:fastcgi_pass unix:/tmp/php-cgi.sock;
而随心微博之前没发生502错误的配置文件是:fastcgi_pass 127.0.0.1:9000;
换成监听9000端口后,再次狂刷新页面,没有出现;找一个外地朋友测试一下:刷新50+,没有出现502。而之前我是基本上刷新了八九次就会出现一次502错误;
所以,确定应该就是fastcgi监听端口的问题引起的;
具体步骤:
1.修改nginx.conf
nginx安装目录:/usr/local/nginx/conf/ ,打开nginx.conf,查找到:
fastcgi_pass unix:/tmp/php-cgi.sock;
改为:
fastcgi_pass 127.0.0.1:9000;
2.修改php-fpm.conf
php安装目录:,/usr/local/php/etc/,打开php-fpm.conf
查找到第26行:
<value name=”listen_address”>/tmp/php-cgi.sock</value>
改为
<value name=”listen_address”>127.0.0.1:9000</value>
3.依次重启Nginx和php-fpm
nginx 重启:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
php-fpm重启:
/usr/local/php/sbin/php-fpm restart
okay,完成操作,现在试试是否还存在502错误了吧,如果还存在,可能就是fastcgi进程数不够,可适当根据自身服务器内存需要,修改cgi进程数目,在php-fpm.conf修改max_children最大数目,如我的服务器2G内存,修改为 <value name=”max_children”>72</value>。
可能还会修改:
<value name=”request_terminate_timeout”>9999s</value>
<value name=”request_slowlog_timeout”>999s</value>