我最近在 Apache 2.4 安装中使用 Event MPM,以及 PHP-FPM 和 FastCGI 代理,我希望这不是导致我出现问题的原因。我还开始使用基于名称的 VirtualHost 指令,尽管我没有多个网站,Linux(特别是 CentOS 7)只是一个在 NAT 后面运行的 VM。
在这些更改之前,除了 VM 仍然在 NAT 后面运行之外,它运行良好(至少我相信如此,我将在稍后解释),但是“需要 IP”现在困扰着我。
<VirtualHost *:80>
DocumentRoot /home/website/public_html
<Directory /home/website>
Allow from all
Options +Indexes
AllowOverride All
</Directory>
<Location />
# Allow Internal IPs
Require ip 10.0.0.0/8
Require ip 172.16.0.0/12
Require ip 192.168.0.0/16
Require ip 0.0.0.0/8
Require ip 127.0.0.0/8
# Allow Company IPs
Require forward-dns broadband1.company.com
Require forward-dns broadband2.company.com
# Allow all IPs (comment it if disallowed)
Require all granted
</Location>
</VirtualHost>
因此,当我将 Web 文件放在public_html
文件夹下时,它运行良好。太棒了!但随后,我安装了 phpMyAdmin 并phpMyAdmin.conf
在 下进行了修改/etc/httpd/conf.d/
,如下所示:
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
# Allow Internal IPs
Require ip 10.0.0.0/8
Require ip 172.16.0.0/12
Require ip 192.168.0.0/16
Require ip 0.0.0.0/8
Require ip 127.0.0.0/8
# Allow Company IPs
Require forward-dns broadband1.company.com
Require forward-dns broadband2.company.com
# Was here by default
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
与上面的 VirtualHost 不同,这次我没有授予所有 IP 地址访问 phpMyAdmin 的权限,因为如果他们能够暴力破解数据库,那就非常危险了。
同样适用于/server-status
和/server-info
,只有特定 IP 才能访问此类页面,而 肯定不行Require all granted
。但在我们开始使用 VirtualHost 后,他们可以访问此类页面,因此 phpMyAdmin.conf 下的“需要 IP”部分和我为 /server-status 和 /server-info 创建的指令实际上无法正常工作。
然后我好奇地尝试了一下,评论了“Require all grant” httpd.conf
,看看会发生什么,然后 phpMyAdmin 就如预期的那样无法访问了。所以看起来“Require ip”完全基于 VirtualHost。但是,VirtualHost 下没有提到其他 3 个页面,所以我不知道我做错了什么。
我的问题是:如何让 phpMyAdmin 和 /server-status 和 /server-info 中的“需要 ip”再次起作用?提前感谢您的帮助!