
Недавно я изменил использование 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? Спасибо за помощь заранее!