Nginx访问php文件报502错误的解决方法

安装好nginx后,配置文件没有问题,可以正常访问html,访问php文件时,报错502
查看nginx的报错日志:

2020/07/15 11:39:13 [error] 28705#0: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 10.10.4.135, server: www.xinxinzhang.com, request: "GET /fuck.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.0.20"

首先,我们需要知道,nginx和php的交互是通过php-fpm交互的,交互方式遵循FastCGI协议,根据这个报错日志判断原因是,nginx无法与php-fpm正常交互。

1、查询php-fpm是否安装

通过find / -name php-fpm查询服务器中是否有php-fpm,如果没有,先安装php-fpm

image.png

2、启动php-fpm

我的php-fpm安装路径是/usr/sbin/php-fpm,可以通过/usr/sbin/php-fpm start命令启动。需要注意的是,php 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要通过systemctl start php-fpm来启用php-fpm

使用命令ps -ef |grep php-fpm查看状态:

image.png

可以看到php-fpm已经启动成功
php的FastCGI端口号默认是9000,使用命令netstat -ant |grep 9000,查看9000端口是否监控,发现正在监听
image.png

3、重启Nginx

systemctl restart nginx

重启后问题解决


image.png

为了防止每次使用php-fpm都需要手动启用,可以将php-fpm设置为开机自启动

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。