На моей виртуальной машине Ubuntu 16.4 я успешно настроил Apache 2.4 и настроил несколько виртуальных хостов. Я хочу увидеть статус сервера, но мой первый виртуальный хост продолжает мешать этому. Я читал и перечитывал документацию Apache 2.4 по этому поводу. Я поместил следующее в свой /etc/apache2/apache.conf, затем в /etc/apache2/mods-enabled/status.conf и, наконец, в /etc/apache2/sites-enabled/0firstvhost.conf
<Location "/server-status">
SetHandler server-status
Require ip 10.211.55.0/24
</Location>
Читая множество постов на эту тему в документации Apache и ServerFault, я перепробовал много вариантов, применимых к Apache 2.4.
Я могу проверить, работает ли mod_status, увидев его при запуске
sudo apachectl -M | grep status
Конечно, я каждый раз проверял apachectl configtest и перезапускал службу apache2, чтобы проверить, могу ли я перейти на 10.211.55.3/server-status, но приложение Drupal PHP продолжает мешать. В корне этого vhost нет .htaccess.
Я поместил эту директиву внутри и вне директивы.
Я проверяю браузер по IP-адресу виртуальной машины, а также внутри виртуальной машины запускаю
curl localhost/server-status
curl 10.211.55.3/server-status
Приложение Drupal читается первым. Что попробовать дальше? Спасибо, Сэм
решение1
Нашел это, что предполагает.htaccess для сайта по умолчанию мешал mod_statusот работы. Их решение не сработало для меня, но поскольку я в любом случае работаю с виртуальными хостами, я смог создать виртуальный хост без .htaccess. Я добавил произвольный хост в файл Debian /etc/hosts:
127.0.0.1 foo.org
Создал пустой каталог среди других моих виртуальных хостов, создал новый сайт и включил его.
<Directory /home/foo.org>
</Directory>
<Location /server-status>
SetHandler server-status
Require local
Require ip 127.0.0.1
Require ip ::1
</Location>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName foo.org
</VirtualHost>
Итак, на локальном хосте я могу видеть данные
curl foo.org/server-status
решение2
У меня тоже была проблема с моимВиртуальныйХост /etc/sites-enabled/example.conf
обработка запросов для http://localhost/server-info, которые я на самом деле хотел, чтобы обрабатывалисьmod_info.
# File /etc/sites-enabled/example.conf
<VirtualHost *:80>
ServerName example.com
# ...
</VirtualHost>
Проблема, по моему скромному мнению, в том, что Apache имеет резервное поведение обработки запросов по умолчанию, если какой-то запрос не соответствует ни одному настроенномуВиртуальныйХост'sИмя сервера(видеть1,2). Какmod_infoфайлы конфигурации по умолчанию /etc/apache2/mods-available/info.load
и /etc/apache2/mods-available/info.conf
не указывают свои собственныеВиртуальныйХостиИмя сервера, я думаю, что сработал резервный вариант Apache, когда у меняexample.conf ВиртуальныйХостобработать запрос на http://localhost/server-info.
Я решил проблему следующим образом:
Создайте файл /etc/apache2/mods-available/localhost-server-info.load
(уведомлениеmods-available
). Этокопияоригинала info.load
:
LoadModule info_module /usr/lib/apache2/modules/mod_info.so
Создайте файл /etc/apache2/sites-available/localhost-server-info.conf
(уведомлениеsites-available
). Это адаптация оригинала info.conf
, заключающая его содержимое вВиртуальныйХости предоставлениеИмя сервера:
# Get mod_info information by requesting http://localhost/server-info
#
# Enable by executing
# service apache2 stop
# a2dismod info
# a2enmod localhost-server-info
# a2ensite localhost-server-info
# service apache2 start
#
# Disable by executing
# service apache2 stop
# a2dissite localhost-server-info
# a2dismod localhost-server-info
# service apache2 start
<IfModule mod_info.c>
<VirtualHost *:80>
# Adapt ServerName to your needs
# Avoid ServerName collision with any other active VirtualHosts
ServerName localhost
<Location /server-info>
SetHandler server-info
# Adapt Require to your needs
# Require local
# Require ip 192.0.2.0/24
</Location>
</virtualHost>
</IfModule>
Отключить оригиналИнформациямодуль (если он все еще включен) и включите новыйlocalhost-сервер-информациямодульисайт:
service apache2 stop
a2dismod info
a2enmod localhost-server-info
a2ensite localhost-server-info
service apache2 start
- http://example.com/server-infoтеперь должен заниматьсяпример.comVirtualHost (вероятно, отображает страницу 404).
- http://localhost/server-info теперь должен обрабатыватьсяmod_info.
- http://127.0.0.1/server-infoи другие неконфигурированныеИмя сервераs должны обрабатываться в соответствии с резервной обработкой Apache, например, в моем примере с помощьюпример.comVirtualHost (вероятно, отображает страницу 404).