热搜词
发表于 2009-6-28 08:22:29 | 显示全部楼层 |阅读模式
本帖最后由 灰儿 于 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_size  16k;
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
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-24 03:09 , Processed in 0.164582 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team