12

У меня есть конфигурация Apache2 с несколькими виртуальными хостами. Мой DNS настроен на прием *.<domain>.<tld> на нескольких доменах. Все работает правильно, но если я захожу на something-random-here.example.com случайное здесь. Пример, я, кажется, выбираю недопустимый VirtualHost (я предполагаю, первый или последний, который он находит). Есть ли способ указать Apache использовать определенные правила, если ни одна из записей VirtualHost не соответствует домену или поддомену? Я бы предпочел вернуть 404.

3 ответа3

11

Apache использует первый виртуальный хост, если не найдено ни одного имени. Просто настройте новый виртуальный хост как первый со случайным именем, отображая все, что вам нравится - или возвращая страницу 404.

3

Подстановочный знак включает в себя файлы конфигурации вашего сайта:

Include path/to/site/confs/*httpd.conf

Организуйте файлы conf вашего сайта так, чтобы они загружались в ожидаемом порядке. Пример...

01-httpd.conf

02-site1-httpd.conf

03-site2-httpd.conf

так далее...

Apache прочитает их по порядку. Затем создайте тот, который будет всегда загружаться последним, чтобы перехватить любые несоответствующие виртуальные хосты и вернуть 404 вместо загрузки сайта по умолчанию.

99-Catchall-httpd.conf

<VirtualHost *:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost *:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

Обязательно замените порты теми портами, которые слушает ваш httpd. Или, если у вас есть прослушивание httpd на определенных интерфейсах, вам нужно вместо этого добавить ловушку для каждого интерфейса, например так:

<VirtualHost 192.168.1.101:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

Надеюсь это поможет. Я использую этот метод для загрузки сайтов в указанном мной порядке и предотвращаю непреднамеренную загрузку неожиданного сайта несопоставленными виртуальными хостами.

0

Как упоминает Moritz Both , Apache2 будет использовать первый виртуальный хост, который он найдет, если он не совпадает с тем, который вы запросили.

Когда вы впервые устанавливаете Apache2, на веб-сайте по умолчанию есть conf, который вы можете использовать в качестве шаблона, изменить или удалить, и мне всегда было интересно, для чего фактически нужен 000-default.conf, потому что у них тоже был default.conf. Прочитав то, что сказал Moritz Both , теперь все становится более понятным.

Что я сделал для своего сервера, так это скопировал конфигурацию для имени хоста (веб-сайта) по умолчанию в файл 000-default.conf и a2ensite 000-default .

Теперь, каждый раз, когда на мой веб-сайт поступает непревзойденный запрос домена, он обслуживает страницу с 000 по умолчанию, которая является лишь копией моей настоящей страницы по умолчанию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .