Nginx + php-fpm 初始化配置

本文介绍了Nginx+php-fpm的初始配置步骤,重点解决文件被当作下载而不是执行的问题。配置关键点包括:确保fastcgi_pass的主机名与server_name匹配,以及设置php-fpm的运行用户与Nginx用户一致。此外,文章还列举了一些常见问题及解决方案,如:检查nginx配置文件引用,添加用户和组,以及处理跨服务器通信和Socket通信的选择。当遇到502网关错误时,可能需要调整php-fpm的监听地址或工作目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总的来说,Nginx + php-fpm的初始化配置还是比较简单的,如果没有配置好,在访问php文件的时候会表现为将文件直接下载下来了,这时候其实就是php脚本没能被正常解析。这时候排查的点主要有两个:

  • 1、检查php-fpm.conf中的listen,如果是listen = /tmp/php-cgi.sock,那么对应的Nginx中的fastcgi_pass就需要设置为:fastcgi_pass unix:/tmp/php-cgi.sock;,反之如果前者是listen = 127.0.0.1:9000,那么后者就需要设置为:fastcgi_pass 127.0.0.1:9000;
  • 2、要确保Nginx有与php-fpm通讯的权限。一般的做法是设置Nginx的运行用户为www,即nginx.conf中起始的地方user那一行设置为:user www www;。然后php-fpm.conf中的设置也相对应的设置为www,即:
listen.owner = www
listen.group = www
listen.mode = 0666

设置完以上两处之后一般就可以正常解析php脚本了。。


一些踩过的坑,在此备注一下:

附一php-fpm的配置不一定是php-fpm.conf,有的版本会引用php-fpm.d下的配置文件,这时候一般在
php-fpm.d下会有一个www.conf,相应地修改其中的listenlisten.owner等即可

附二:如果没有www用户和组,需要手动添加,命令是:

groupadd www
useradd -g www -s /sbin/nologin www

附三php-fpm的监听建议设置为php-cgi.sock的形式Nginxphp-fpm的进程间通信有两种方式,一种是TCP,形如:127.0.0.1:9000;另一种是unix socket,形如:/tmp/php-cgi.sockTCP的形式可以跨服务器,,而unix socket只适用于Nginxphp-fpm在同一台机器的场景,但是效率要高于前者的,具体原因可以参考 https://shaohualee.com/article/760

附四:有时候运行的好好地会报502网关错误,这时候即便/tmp/php-cgi.sock是存在的,也有正常的权限,Nginx的错误日志中死活会报找不到/tmp/php-cgi.sock,说它不存在。这时候将php-fpmlisten切换为127.0.0.1:9000(当然相应的Nginx fastcgi_pass也要修改)就好了。另外还有一种方式可以尝试:将php-cgi.sock切换到其他目录下,比如将/tmp/php-cgi.sock修改为/var/run/php-cgi.sock就可以了,具体原因暂时还没有搞清楚。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值