Apache 2.4 «Require ip» не работает для /server-status, /phpMyAdmin и т. д. с директивами VirtualHost, добавленными в httpd.conf

Apache 2.4 «Require ip» не работает для /server-status, /phpMyAdmin и т. д. с директивами VirtualHost, добавленными в httpd.conf

Недавно я изменил использование Event MPM в моей установке Apache 2.4, наряду с PHP-FPM и FastCGI proxy, надеюсь, что это не было причиной моей проблемы. Я также начал работать с директивами VirtualHost на основе имен, хотя у меня нет нескольких веб-сайтов, Linux (в частности, CentOS 7) — это просто виртуальная машина, работающая за NAT.

До этих изменений, за исключением того, что виртуальная машина все еще работала за 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>

Итак, когда я помещаю веб-файлы в 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, они могут получать доступ к таким страницам, так что буквально раздел «Требовать IP» в phpMyAdmin.conf и директивы, которые я создал для /server-status и /server-info, не работают должным образом.

Затем я с любопытством попробовал и прокомментировал "Require all given" httpd.confи посмотрел, что произойдет, а затем phpMyAdmin стал недоступен, как и ожидалось. Так что похоже, что "Require ip" основан исключительно на VirtualHost. Однако остальные 3 страницы не упоминаются в VirtualHost, поэтому я не знаю, что я сделал неправильно.

Мой вопрос: как заставить "Требовать ip" снова работать для phpMyAdmin и /server-status и /server-info? Спасибо за помощь заранее!

Связанный контент