分类
环境搭建

如何解决502(Bad GateWay)

视频讲解

在刚装完好环境后(Nginx 与 PHP-FPM),Nginx报了502,应该如何解决?

两个问题:

  • Nginx报502是Nginx出错了吗?Nginx没有出错,如果Nginx出错你可能已经看不到报错了。
  • Nginx如何与PHP-FPM通信?本质上是进程间通信。通信不畅,则报错。Nginx连不上PHP-FPM,就报了502

Nginx有两种方式连接PHP-FPM。

  • IP + PORT :比如Nginx配置文件中的 fastcgi_pass 127.0.0.1:9000
  • socket文件:比如Nginx配置文件中的 fastcgi_pass unix:/tmp/php.sock

对于第一种方式(IP + PORT):Nginx通过IP与端口去找PHP-FPM,通常我们将Nginx与PHP-FPM安装在同一主机上,所以ip为127.0.0.1;PHP-FPM默认端口为9000(可以修改),所以Nginx会找本地的9000端口,使用命令 netstat -tlunp | grep php-fpm查看PHP-FPM的端口信息

,如果命令没有返回,可能没有启动PHP-FPM进程。如果看到的端口不是9000,有两种方法解决:1、修改Nginx配置文件中fastcgi_pass中的端口。2、修改PHP-FPM配置文件中的端口(listen = 127.0.0.1:port)。

对于第二种方式(socket文件):检查PHP-FPM配置文件中 listen 配置项是否也是 socket文件形式,如果不是有两种方法解决:1 PHP-FPM配置文件中listen改成 socket文件形式,与Nginx中配置保持一致。2、修改Nginx配置文件,与PHP-FPM配置文件中的listen 保持一致。

总结:同时检查Nginx配置文件与PHP-FPM配置文件,并配合查看进程与端口。