Я использую Apache 2.4.18 в Ubuntu.
Я хочу разрешить чтение статуса сервера только с localhost.
В /etc/apache2/mods-enabled/status.conf
У меня есть:
<Location /server-status>
SetHandler server-status
Require ip 127.0.0.1
</Location>
я прочитал https://httpd.apache.org/docs/2.4/howto/access.html и я считаю, что вышеуказанная конфигурация должна работать. Я перезапустил Apache, чтобы убедиться, что новая конфигурация активна. Однако страница статуса по-прежнему открыта для чтения из любого места.
В /etc/apache2/sites-enabled/mysite.conf
У меня есть:
DocumentRoot /var/www
<Location />
Require all granted
</Location>
Что не так с моей конфигурацией?
Насколько я могу судить, конфигурационный файл виртуального хоста имеет приоритет над mod_status
файл конфигурации.
На самом деле вы все отдаете /
в пределах mysite.conf
:
<Location />
Require all granted
</Location>
В результате каждый может получить доступ /server-status
.
Вам нужно будет управлять разрешениями на /server-status
в самом файле конфигурации виртуального хоста /etc/apache2/mods-enabled/status.conf
:
DocumentRoot /var/www
<Location />
Require all granted
</Location>
<Location /server-status>
Require local
</Location>
Оттуда, какие бы разрешения вы ни установили /etc/apache2/mods-enabled/status.conf
они будут проигнорированы как /etc/apache2/mods-enabled/status.conf
имеет приоритет.
Используйте указанную ниже директиву location в status.conf
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
После этого установите lynx на свой компьютер из интерфейса командной строки. Lynx - это полнофункциональный клиент World Wide Web (WWW) для пользователей, доступ к которому можно получить через терминалы Linux.
Для Ubuntu установите lynx, используя
apt-get install lynx
Выполните приведенную ниже команду, чтобы проверить статус сервера Apache.
lynx http://localhost/server-status