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目录下,使用的内存读写更快噢;

posted @ 2020-05-20 17:42  JahanGu  阅读(850)  评论(0编辑  收藏  举报