Apache 2.4 和 php-fpm 不会触发 php 页面的 apache http 基本身份验证
Apache 2.4 and php-fpm does not trigger apache http basic auth for php pages
我确定这是某个地方有人问过的问题,如果是这样请原谅,但谷歌搜索并没有给我任何有形的信息。
这是我的场景:
我正在使用 apache http basic auth 保护 web 目录。所以我在根文件夹中有我的 .htaccess,我的 httpd.conf 配置为覆盖所有,以便它考虑 .htaccess。我的.htaccess的内容如下:
AuthType 基本
授权名"test"
AuthUserFile /etc/httpd/.test_pass
需要有效用户
.test_pass 已成功设置 htpasswd。通过浏览器或任何 html 文件访问 Web 根文件夹时,我会正确弹出身份验证。使用密码给了我预期的访问权限。
但是当我访问 php 页面时,没有出现身份验证弹出窗口,php 页面呈现。
这是我的设置:
- Apache 版本:2.4.6
- php-fpm: PHP 5.4.16 (fpm-fcgi) with Zend Engine v2.4.0
- 使用来自 proxy_fcgi_module(共享)的 proxypass 进行通信
在 apache 2.4 和 php-fpm
之间
- 我也没有使用套接字连接,因为 apache 2.4.6 没有
支持
- 我的 proxypass 设置如下,效果很好:
ProxyPassMatch ^/(..php(/.)?)$
fcgi://127.0.0.1:9000/var/www/html/$1
我需要能够通过 apache basic auth 设置 username/password 身份验证,它可以保护目录中的每个文件,包括 php 个文件。
我正在使用开源软件;所以修改软件代码是最后的手段。
php-fpm 和 mod_proxy_fcgi 有工作 around/solution 吗?
谢谢
经过几个小时的研究,我了解到发生这种情况的原因是因为 ProxyPassMatch 指令是第一个要处理的指令,这会导致 apache 忽略 .php 扩展名的其他指令。
为了能够通过 proxy_fcgi_module 将其他 apache 指令与 php-fpm 一起使用,应该使用 filesmatch 指令而不是 proxypassmatch。
语法如下:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
我确定这是某个地方有人问过的问题,如果是这样请原谅,但谷歌搜索并没有给我任何有形的信息。
这是我的场景:
我正在使用 apache http basic auth 保护 web 目录。所以我在根文件夹中有我的 .htaccess,我的 httpd.conf 配置为覆盖所有,以便它考虑 .htaccess。我的.htaccess的内容如下:
AuthType 基本
授权名"test"
AuthUserFile /etc/httpd/.test_pass
需要有效用户
.test_pass 已成功设置 htpasswd。通过浏览器或任何 html 文件访问 Web 根文件夹时,我会正确弹出身份验证。使用密码给了我预期的访问权限。
但是当我访问 php 页面时,没有出现身份验证弹出窗口,php 页面呈现。
这是我的设置:
- Apache 版本:2.4.6
- php-fpm: PHP 5.4.16 (fpm-fcgi) with Zend Engine v2.4.0
- 使用来自 proxy_fcgi_module(共享)的 proxypass 进行通信 在 apache 2.4 和 php-fpm 之间
- 我也没有使用套接字连接,因为 apache 2.4.6 没有 支持
- 我的 proxypass 设置如下,效果很好: ProxyPassMatch ^/(..php(/.)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
我需要能够通过 apache basic auth 设置 username/password 身份验证,它可以保护目录中的每个文件,包括 php 个文件。
我正在使用开源软件;所以修改软件代码是最后的手段。
php-fpm 和 mod_proxy_fcgi 有工作 around/solution 吗?
谢谢
经过几个小时的研究,我了解到发生这种情况的原因是因为 ProxyPassMatch 指令是第一个要处理的指令,这会导致 apache 忽略 .php 扩展名的其他指令。
为了能够通过 proxy_fcgi_module 将其他 apache 指令与 php-fpm 一起使用,应该使用 filesmatch 指令而不是 proxypassmatch。
语法如下:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>