Apache 2.4和php-fpm不会为php页面触发apache http basic auth

时间:2015-03-13 13:42:28

标签: apache proxy php fastcgi centos7

我确信这是一个在某个地方被问过的问题,如果有的话,请原谅我,但谷歌搜索并没有给我任何有形的东西。

以下是我的情景:

我使用apache http basic auth保护web目录。所以我在根文件夹中有我的.htaccess,我的httpd.conf配置为覆盖所有,以便考虑.htaccess。我的.htaccess的内容如下:

AuthType Basic

AuthName“test”

AuthUserFile /etc/httpd/.test_pass

需要有效用户

.test_pass已成功设置htpasswd。通过浏览器或任何html文件访问Web根文件夹时,我会正确弹出身份验证。使用密码可以获得预期的访问权限。

但是当我访问php页面时,不会出现身份验证弹出窗口并显示php页面。

这是我的设置:

  • Apache版本:2.4.6
  • php-fpm:使用Zend Engine v2.4.0的PHP 5.4.16(fpm-fcgi)
  • 使用来自proxy_fcgi_module(共享)的proxypass进行通信 在apache 2.4和php-fpm之间
  • 我也没有使用套接字连接,因为apache 2.4.6没有 支持它
  • 我的proxypass设置如下,效果很好: ProxyPassMatch ^ /(。 .php(/.)?)$ FCGI://127.0.0.1:9000 /无功/网络/ HTML / $ 1

我需要能够通过apache基本身份验证设置用户名/密码身份验证,该身份验证可以保护目录中的所有文件,包括php文件。

我正在使用开源软件;因此,修改软件代码是最后的手段。

是否有针对php-fpm和mod_proxy_fcgi的解决方案?

由于

1 个答案:

答案 0 :(得分:3)

经过数小时的研究后,我明白发生这种情况的原因是因为ProxyPassMatch指令是第一个要处理的指令,这导致apache忽略.php扩展名的其他指令。

为了能够通过proxy_fcgi_module使用php-fpm的其他apache指令,应该使用filesmatch指令而不是proxypassmatch。

语法如下:

<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>