nginx出现502 Bad Gateway 错误问题收集
本帖最后由 灰儿 于 2009-6-28 08:35 编辑因为,nginx和lighttpd的文档真的很少,更不用说中文文档了,所以收集一些和502有关的错误在这里,保留来源地址,建议看来源地址的内容。
502是FastCGI出现问题,所以从FastCGI配置入手。
1.请检查你的FastCGI进程是否启动
2.FastCGI进程不够使用
请通过执行 netstat -anpo | grep "php-cgi" | wc -l 判断,是否接近你启动的FastCGI进程,接近你的设置,表示进程不够
来源:http://blog.s135.com/post/361.htm
3.执行超时
请把
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
这几项的值调高
来源:http://blog.s135.com/post/361.htm
4.FastCGI缓冲不够
nginx和apache一样,有前端缓冲限制
请把
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
这几项的值调高
来源:http://www.hiadmin.com/nginx-502-gateway-error一例/
5.Proxy缓冲不够
如果你使用了Proxying,请把
proxy_buffer_size16k;
proxy_buffers 4 16k;
这几项的值调高
来源:http://www.ruby-forum.com/topic/169040
6.https转发配置错误
正确的配置方法
server_name www.mydomain.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;
}
来源:http://www.ruby-forum.com/topic/173455
7.php脚本执行时间过长
增加fastcgi_connect_timeout 等三个参数值的方法效果也不好
经过长时间反复测试,发现静态页面不会出现该错误,只有在运行动态页面或者长时间操作数据库时才会出现这个错误,重启Nginx+FastCGI后即可解决,但是几分钟到几个小时后又会出现该错误。
经过测试,发现修改php-fpm.conf文件中 request_terminate_timeout即FastCGI脚本运行时间可以有效改善该问题,增加CGI进程数也可以改善该问题,但占资源太多效率太低。
还可以修改
<value name=\"request_terminate_timeout\">0s</value>
<value name=\"process_control_timeout\">5s</value>
等值对FastCGI进行优化,所以出现502的错误其实不是nginx的问题
php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误
页:
[1]