Виртуальный хост, предотвращающий директиву server-status

Виртуальный хост, предотвращающий директиву server-status

На моей виртуальной машине 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).

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