nginx报错502 Bad Gateway
1先说这个是配置lnmp站点出现的问题;
排查问题:首先就去看看nginx的错误日志;我的nginx配置的错误日志路径是在/var下面
错误日志显示我的一般有这两种:
1)[error] 29221#0: *49 connect() failed (111: Connection refused) while connecting to upstream...
2)[crit] 28817#0: *18654 connect() to unix:/run/php-fpm/www.sock failed (13: Permi ssion denied) while connecting to upstream
基本上都是配置fastcgi_pass的错,说之前先了解一下fastcgi_pass 监听端口 的两种方式unix socket和tcp socket
第一种是unix socket, 第二种是tcp socket(127.0.0.1:9000);都是在php-fpm配置文件里面listen配置的;往下说两者的区别;
tcp socket配置如下:
location ~ .*\.(php|php5)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
unix socket配置如下:
location ~ .*\.(php|php5)$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket区别
可以参考一下这篇文章:https://blog.csdn.net/liv2005/article/details/7741732
了解清楚之后,再来排查错误,省得莫名其妙;
1)[error] 29221#0: *49 connect() failed (111: Connection refused) while connecting to upstream...
上面这个问题也是nginx配置fastcgi_pass之类的异常;比如php-fpm没启动没监听9000等。
netstat -ant | grep 9000 可以用这个命令查看有没有监听到9000, 没有就启动php-fpm
2)[crit] 28817#0: *18654 connect() to unix:/run/php-fpm/www.sock failed (13: Permi ssion denied) while connecting to upstream
上面这个问题就是运行unix sockt模式的问题,生成的sock文件没有访问权限;所以要注意权限问题;
将sock文件放在/dev/shm目录下,使用的内存读写更快噢;