nginx常见502问题的解决
nginx常见502问题的解决常见502 Bad Gateway出现的原因大致分为两种:
(1)配置错误,nginx的配置路径:/data/www路径错了会报错502
# pwd
/usr/local/nginx/conf/vhosts
# vim test.conf
server
{
listen 80;
server_name wwww.test.com;
index index.html index.htm index.php;
root /data/www;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;
#fastcgi_pass127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
注意:不同的域名对应不同的虚拟主机配置文件,如果下面两个配置文件都写同一个域名www.test.com,则按照default.conf解析为准,如果default里有deny all,报错403 Forbidden,无法访问。
default.conf111.com //这里不能写www.test.com,否则会导致访问www.test.com报错403 Forbidden
test.conf www.test.com
(2)资源耗尽
LNMP架构处理php时,是nginx直接调用后台的php-fpm服务,如果nginx的请求量偏高,而我们又没有给php-fpm配置足够的子进程,那么总有php-fpm资源耗尽的时候,一旦nginx找不到php-fpm,此时就会导致502错误。解决方法是调整php-fpm.conf中的pm.max.childen数值,不是无限量设置的,4G设置150,8G可以设置为300左右比较合适。
实例:
# cd /usr/local/nginx/conf/vhosts/
# ls
111.confdefault.conf
# mv 111.conf test.conf
# vim !$
vim test.conf
红色为修改内容:
server
{
listen 80;
server_name wwww.test.com;
index index.html index.htm index.php;
root /data/www;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;
#fastcgi_pass127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
}
检查配置文件:
# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
重新加载,两种方法都可以:
# /usr/local/nginx/sbin/nginx -s>
# /etc/init.d/nginx> 重新载入 Nginx: [确定]
在浏览器中访问:www.test.com 报错502.
# cat /usr/local/nginx/logs/nginx_error.log
2016/01/07 11:48:19 7622#0: *6 connect() to unix:/tmp/www.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: www.test.com, request: "GET http://www.test.com/ HTTP/1.1", upstream: "fastcgi://unix:/tmp/www.sock:", host: "www.test.com" //发现没有权限
# ls -l /tmp/www.sock
srw-rw---- 1 root root 0 1月 6 20:41 /tmp/www.sock
# ps aux | grep nginx
root 50580.00.0 52201428 ? Ss 18:49 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody58110.00.1 64722416 ? S 20:58 0:00 nginx: worker process
nobody58120.00.1 64722236 ? S 20:58 0:00 nginx: worker process
root 58600.00.0 6052 796 pts/0 S+ 21:04 0:00 grep nginx
解决方法:在www池中添加监听用户和用户组
# vim /usr/local/php/etc/php-fpm.conf
listen.owner= nobody
listen.group = nobody
# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpmdone
主机hosts 192.168.101.230 www.test.com
在浏览器中可以正常访问。
页:
[1]