Обработка по умолчанию для несоответствующих доменов/поддоменов в Apache

Обработка по умолчанию для несоответствующих доменов/поддоменов в Apache

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

решение1

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

решение2

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

Include path/to/site/confs/*httpd.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, слушающий на определенных интерфейсах, вам нужно будет добавить catchall для каждого интерфейса, например так:

<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>

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

решение3

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

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

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

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

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