小编ide*_*ide的帖子

通过 ProxyPassMatch 作为处理程序转发 PHP 请求,或仅在文件存在时转发

我正在迁移我的服务器以使用 mod_proxy_fcgi 和 php-fpm 而不是 mod_php。Apache 能够将 .php 请求转发到 fcgi 代理,并且 PHP 可以正确执行。我有这个工作:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使文件不存在,Apache 也会将所有 .php 请求转发给代理。这会导致一些问题。我的 ErrorDocument 规则没有被调用,DirectoryIndex index.php index.html也没有回退到 index.html。

我能够使用 mod_rewrite 解决这些问题:

RewriteEngine On                                                           
RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$                       
RewriteCond /var/www/html/%2 -f                                   
RewriteRule . fcgi://127.0.0.1:9000/var/www/html/%1 [P] 
Run Code Online (Sandbox Code Playgroud)

但是,Apache 文档不推荐 RewriteRule:“这是因为此标志触发了默认工作程序的使用,该工作程序不处理连接池。”

理想情况下,我想我要么想在 FilesMatch 块中使用 ProxyPass(目前不受支持),要么定义一个新的处理程序,通过 fcgi 代理并使用它来处理 .php 请求,类似于 mod_php 所做的。

任何模拟标准 mod_php 设置但实际上通过 fcgi 代理的建议?

httpd php-fpm proxypass fcgi apache-2.2

10
推荐指数
2
解决办法
8318
查看次数

标签 统计

apache-2.2 ×1

fcgi ×1

httpd ×1

php-fpm ×1

proxypass ×1