在 httpd.conf 中添加 VirtualHost 指令后,Apache 2.4“需要 ip”不适用于 /server-status、/phpMyAdmin 等

在 httpd.conf 中添加 VirtualHost 指令后,Apache 2.4“需要 ip”不适用于 /server-status、/phpMyAdmin 等

我最近在 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”再次起作用?提前感谢您的帮助!

相关内容