导读:本期聚焦于小伙伴创作的《如何在Nginx中通过Unix Socket连接PHP-FPM并修改listen为sock文件》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Nginx中通过Unix Socket连接PHP-FPM并修改listen为sock文件》有用,将其分享出去将是对创作者最好的鼓励。

在LNMP环境搭建中,Nginx和PHP-FPM的通信方式通常有两种,一种是TCP网络端口通信,另一种就是Unix Socket通信。相比TCP方式,Unix Socket通过本地文件系统实现进程间通信,不需要经过网络协议栈,性能更优,也不会占用额外的网络端口,是生产环境中更推荐的选择。接下来将一步步讲解如何把PHP-FPM的监听方式修改为sock文件,并配置Nginx使用对应的Unix Socket连接PHP-FPM。

如何在Nginx中通过Unix Socket连接PHP-FPM并修改listen为sock文件

一、修改PHP-FPM的listen配置为sock文件

首先我们需要找到PHP-FPM的配置文件,不同系统的配置文件路径可能略有差异,常见的路径有/etc/php-fpm.d/www.conf或者/usr/local/php/etc/php-fpm.d/www.conf,我们可以通过以下命令查找对应的配置文件:

find / -name www.conf 2>/dev/null | grep php-fpm

打开找到的www.conf配置文件,找到listen配置项,默认情况下它可能是监听TCP端口,比如listen = 127.0.0.1:9000,我们需要把它修改为sock文件的路径,示例配置如下:

listen = /run/php-fpm/php-fpm.sock
; 以下两项配置建议同时设置,避免权限问题
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

修改完成后保存配置文件,重启PHP-FPM服务让配置生效,不同系统的重启命令如下:

systemctl restart php-fpm
# 如果是源码安装的话可能使用以下命令
/etc/init.d/php-fpm restart

二、配置Nginx使用Unix Socket连接PHP-FPM

接下来需要修改Nginx的站点配置,找到处理PHP请求的location块,默认的配置可能是使用TCP端口连接PHP-FPM,类似下面的内容:

location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

我们需要把fastcgi_pass的值修改为刚才PHP-FPM配置的sock文件路径,修改后的配置如下:

location ~ .php$ {
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

修改完成后保存Nginx配置文件,先测试配置是否有语法错误,再重启Nginx服务:

nginx -t
systemctl restart nginx

三、权限问题排查与验证

完成上述配置后,我们可以创建一个测试PHP文件来验证配置是否生效,在Nginx的站点根目录下创建info.php文件,内容如下:

<?php
phpinfo();
?>

如果访问测试文件时出现502错误,大概率是sock文件的权限问题,我们可以通过以下命令查看sock文件的权限和所属用户:

ls -l /run/php-fpm/php-fpm.sock

确保Nginx的运行用户(通常是nginx或者www-data)对sock文件有读写权限,如果权限不足,可以回到PHP-FPM的www.conf配置中调整listen.ownerlisten.grouplisten.mode的值,重新重启PHP-FPM和Nginx即可。

如果访问页面能正常显示PHP信息,说明Nginx已经成功通过Unix Socket连接到了PHP-FPM,配置完成。

NginxPHP-FPMUnix_Socketlisten配置修改时间:2026-06-26 13:18:14

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。