Plesk18环境下如何配置Apache/Nginx让PHP-FPM执行无后缀PHP文件
问题根因
你当前配置失效的核心原因是用了全局无效的PHP-FPM sock路径,Plesk为每个站点的PHP-FPM池分配了独立的sock文件,并非使用全局的/run/plesk/php-fpm.sock。
配置步骤
1. 先获取对应站点的PHP-FPM sock真实路径
执行命令查看PHP7.1 FPM的池配置文件,找到你站点对应的sock路径:
grep -r "listen =" /opt/plesk/php/7.1/etc/php-fpm.d/
返回结果格式类似如下,其中/var/www/vhosts/system/my-site.com/php-fpm.sock就是你站点对应的真实sock路径:
/opt/plesk/php/7.1/etc/php-fpm.d/plesk-service.localdomain.conf:listen = /var/www/vhosts/system/my-site.com/php-fpm.sock
2. 修改Apache配置(替换原有无效的SetHandler规则)
登录Plesk后台,进入对应站点的「Apache与Nginx设置」,在「附加Apache指令」的HTTP和HTTPS框中都填入以下配置,注意替换为你刚才查到的真实sock路径:
<Directory /var/www/vhosts/my-site.com/web> <Files "corporate"> SetHandler proxy:unix:///var/www/vhosts/system/my-site.com/php-fpm.sock|fcgi://127.0.0.1 </Files> # 其他需要特殊处理的文件也可以按照这个格式添加 <Files ~ "(store|pchart\.png|returns)"> SetHandler proxy:unix:///var/www/vhosts/system/my-site.com/php-fpm.sock|fcgi://127.0.0.1 </Files> </Directory>
注意:fcgi://后面不需要加端口,直接写127.0.0.1即可,端口配置会自动匹配FPM池的参数
3. 配置Nginx兼容规则(如果Nginx处理静态文件时拦截了无后缀请求)
同样在站点的「Apache与Nginx设置」页面,找到「附加Nginx指令」框,填入以下配置,避免Nginx直接将无后缀文件作为静态文件返回:
location ~ ^/(corporate|store|pchart\.png|returns)$ { proxy_pass https://apache_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
同时取消勾选「以Nginx作为代理提供静态文件」选项中包含无后缀文件的规则,或者添加上述文件到静态文件排除列表。
4. 验证配置生效
保存配置后,Plesk会自动重启Apache和Nginx服务,访问http://my_site.com/corporate即可看到测试输出内容。如果还有报错,检查站点目录的权限,确保corporate文件的所有者和组是站点对应的系统用户,权限设置为644即可。
内容的提问来源于stack exchange,提问作者JBH
相关产品推荐
相关产品推荐

