反向代理和FastCGI URI格式问题(Unix套接字上为PHP-FPM)

时间:2018-11-26 21:45:13

标签: php apache httpd.conf

尝试通过PHP-FPM代理后端配置Apache 2.4,并在unix套接字上侦听。 以下基本配置可以正常运行:

<VirtualHost *:80>
DocumentRoot "/srv/httpd/htdocs"
ServerName example.tld
ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/"
</VirtualHost>

现在,我想针对特殊情况修改ProxyPassMatch。当domain之后的URI以test开头时,在目标路径的路径中插入/special/

<VirtualHost *:80>
# -- snip --
ProxyPassMatch "^/test/(.*\.php(/.*)?)$" "unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/test/special/$1"
</VirtualHost>

但是它失败,并显示以下调试错误:

[Mon Nov 26 21:38:31.484668 2018] [proxy:error] [pid 14779:tid 
140031510611712] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:8000 (*) failed
[Mon Nov 26 21:38:31.484707 2018] [proxy_fcgi:error] [pid 14779:tid 
140031510611712] [client ::1:55464] AH01079: failed to make connection to backend: 127.0.0.1

在任何apache配置文件中都没有指定端口8000之类的地方。

仅当目标URL既是unix域套接字又是时,它的行为方式是 脚本路径包含一个正则表达式捕获引用$N

unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/test/special/$1

如果省略正则表达式捕获或使用TCP URI而不是套接字,则不会尝试连接到127.0.0.1:8000。

在这种情况下,官方documentation对于fcgi格式尚不清楚。实现中可能存在错误?

在使用RE模式中捕获的引用时,如何正确地将请求的URL映射到unix套接字?

0 个答案:

没有答案