您的位置:首页 > 运维架构 > Nginx

Nginx 502 bad gateway错误解决思路

2016-08-23 19:56 211 查看
当网站打开遇到Nginx 502 bad gateway的错误,造成这种错误的原因有很多,下面分别解析nginx常见的502错误。

1、nginx配置文件错误

因为nginx找不到php-fpm了,所以报错,一般是fastcgi_pass后面的路径配置错误了,后面可以是socket或者是ip:port
解决方案:
[root@bier ~]# vim/usr/local/nginx/conf/vhosts/www.conf
server
{
listen 80;
server_name www.222.com;
index index.html index.htm index.php;
root /data/www/;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;  //修改sock
#fastcgi_pass 127.0.0.1:8000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
}


检查语法是否正常
[root@bier ~]#/usr/local/nginx/sbin/nginx -t
重新加载配置文件
[root@bier ~]# /usr/local/nginx/sbin/nginx-s reload

2、php-fpm资源耗尽

lnmp架构在处理php时,nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,我们又没有给php-fpm配置足够的子进程,那么php-fpm就会资源耗尽,一旦资源耗尽nginx找不到php-fpm就会出现502错误,
解决方案:
去调整php-fpm.conf中的pm.max_children数值,使其增加,但是也不能无限增加,毕竟资源有限,一般4G内存机器如果跑php-fpm和nginx,不跑mysql可以设置为150,8G为300以此类推

[root@bier ~]# vim/usr/local/php/etc/php-fpm.conf
pm = dynamic
pm.max_children = 150
pm.start_servers = 20


还有限制php执行时间可以在php-fpm.conf中的request_terminate_timeout设置,这是为了防止php程序的bug导致php-cgi假死。

配置完之后重启php-fpm
[root@bier ~]# /etc/init.d/php-fpm restart

3、php-fpm.conf文件设置的不是nginx的主和组

解决方案:
检查nginx是那个用户跑的
[root@bier ~]# ps aux |grep nginx

编辑php-fpm文件需要在这个php-fpm文件里面设置nginx的用户主,跟组这样才不会显示502
[root@bier ~]# vim/usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log =/usr/local/php/var/log/php-fpm.log
[www]
listen = /tmp/www.sock
user = php-fpm
group = php-fpm
listen.owner = nobody    //定义为nginx的所属主
listen.group = nobody    //定义为nginx的所属组


4、流量攻击导致(有可能完全是由于攻击导致,把攻击处理掉就正常打开了)
查看php-cgi是否在运行
有时候由于网站流量过大或者其它原因,导致php-cgi直接down掉,所以我们得看php-cgi是否在运行。执行如下命令:
ps -A | grep php5-cgi

如果没有运行,手动启动
/etc/init.d/php_cgi start

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


6、除了上面的几种情况还有其他的原因,但很少有,也可以借助nginx的错误日志来进行排查
vim /usr/local/nginx/logs/nginx_error.log 这个也是最直观的可以找到一些错误的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  错误 nginx