网站源码下载PR查询短网址
首页编程数据库网页图形冲浪邮件下载浏览器QQ系统办公软件站长安全手机邮件认证组网通信


网站首页 -> 网络编程 -> PHP技巧
Nginx php-fpm fast-cgi 502 Bad Gateway错误处理

发表日期:2009-7-3


Nginx php-fpm fast-cgi 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。
将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:

1.FastCGI进程是否已经启动

2.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进程数设置太少
参见:http://blog.s135.com/post/361.htm

3.FastCGI执行时间过长
根据实际情况调高以下参数值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

4.FastCGI Buffer不够
nginx和apache一样,有前端缓冲限制,可以调整缓冲参数
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
参见:http://www.hiadmin.com/nginx-502-gateway-error%E4%B8%80%E4%BE%8B/

5.PRoxy Buffer不够
如果你用了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/169040
http://bizhi.knowsky.com/
7.查看php-fpm.log
错误请参看:http://www.admin99.net/read.php/396.htm
http://hi.baidu.com/dugu2008/blog/item/0d9e9bf8e8c13b08d8f9fd14.html

8.php的bug
请参看:http://bugs.php.net/bug.php?id=41593

9.php-fpm.conf的配置
请参看http://www.jefflei.com/post/232.html
http://www.php-oa.com/2008/06/05/php-fpm.html

10.nginx.conf的rewrite-url规则等

11.php-fpm.pid
鄙人在/php/sbin/php-fpm 里面把
php_fpm_PID=/data1/php/logs/php-fpm.pid修改成
#php_fpm_PID=/data1/php/logs/php-fpm.pid
故猜想是用户权限的问题已php-fpm.conf里的用户启动该服务估计问题会消失

另外nginx 400 bad request 错误的原因和解决办法
在nginx.conf中,将client_header_buffer_size和large_client_header_buffers都调大,可缓解此问题。
其中主要配置是client_header_buffer_size这一项,默认是1k,所以header小于1k的话是不会出现问题的。
按我现在配置是:
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
这个配置可接收16k以下的header,在浏览器中cookie的字节数上限会非常大,所以实在是不好去使用那最大值。
本文转载自『北漂石头的博客』
http://www.niutian365.com/blog/
更多精彩内容,欢迎访问北漂石头的博客!

上一篇:PHP使用Google的translate API 人气:2830
下一篇:nginx代理缓存乱码问题 人气:3509
网站文章搜索
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<PHP技巧教程>的内容
今日更新文章
·Office 2010宝典 word之(10)巧用书法字帖
·Office 2010宝典 word之(9)快速更改文档
·Office 2010宝典 word之(8)让艺术字为您
·Office 2010宝典 word之(7)通过主题快速
·Office 2010宝典 word之(6)快速插入文档
·Office 2010宝典 word之(5)您手边的工具
·Office 2010宝典 word之(4)多语言翻译
·Office 2010宝典 word之(3)可以朗读的屏
·Office 2010宝典 word之(2)利用文档导航
·Office 2010宝典 word之(1)利用文档导航
·微软:Silverlight在HTML5时代有竞争力
·LG TB200:不买你就输了!
本栏目推荐文章
·sqlserver 2000h 和 jdbc 的融合问题
·String l数据对象的Hash Code值的理解
·利用jdom实现读取数据库生成XML及读取XM
·CMNET和CMWAP网络连接
·使用圆括号
·asp.net2.0学习历程 菜鸟到中级程序员的
·PHP+DBM的同学录程序(2)
·JTextArea中显示LineNumber
·我了解的javaIDE浅析
·struts 开发
·Java应用热遍全球
·Visual Studio集成开发环境无法启动调试
Copyright © 2000-2010 www.Devdao.com All rights reserved | 沪ICP备05001343号 sitemap