Nginx的502一直是个头疼的问题,经常会莫名其妙的出现,原因很多,今天又遇到一个由fastcgi监听端口引起的502 Bad Gateway问题。这是由于Nginx与FastCGI的通信方式为Unix Socket引起的,TCP在高并发访问下比Unix Socket稳定,但Unix Socket速度要比TCP快,小内存VPS建议使用,大内存和寻求稳定的网站还是建议设置为TCP通讯模式。
具体步骤:
1.修改nginx.conf
打开nginx.conf,查找到:
fastcgi_pass unix:/tmp/php-cgi.sock;
改为:
fastcgi_pass 127.0.0.1:9000;
2.修改php-fpm.conf
打开php-fpm.conf
<value name="listen_address">/tmp/php-cgi.sock</value>
改为
<value name="listen_address">127.0.0.1:9000</value>
3.依次重启Nginx和php-fpm
nginx 重启:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
php-fpm重启:
/usr/local/php/sbin/php-fpm restart
附:fastcgi进程数也是跟关键的,修改为合适的数字 <value name="max_children">200</value>。
文章评论