В apache2 по замыслу любой http-запрос с неизвестным хостом будет направлен на первый загруженный VirtualHost. Есть ли способ отключить эту функцию? Другими словами, я хочу иметь веб-сервер, на котором пользователь может получить доступ только к явно названным определениям VirtualHost. Любое другое имя хоста, не упомянутое явно в строке ServerName или ServerAlias, следует игнорировать.
Это возможно?
Listen 80
NameVirtualHost *
<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
Обновить: Как предлагается ниже и в других местах, молчаливое игнорирование запроса может быть не очень хорошей идеей и, возможно, нарушает RFC для HTTP. Однако, поскольку виртуальные хосты предназначены для имитации наличия нескольких отдельных физических HTTP-серверов, метод игнорирования без вывода сообщений не кажется мне необоснованным. Это будет то же самое, что и виртуальный хостинг на основе IP и брандмауэр для некоторых IP-адресов (возможно, не для всех клиентов).
Вот альтернативный способ, не связанный с правилами перезаписи:
<VirtualHost _default_:*>
<Location />
Deny from all
Options None
ErrorDocument 403 Forbidden.
</Location>
</VirtualHost>
Я не уверен, что «молчаливый провал» - хорошая идея. Вы должны дать клиенту хотя бы некоторые указание на то, что произошло. Возможно, вы могли бы отправить http 410 ошибку "пропал". Что-то вроде этого должно помочь:
RewriteRule ^.*$ - [G]
Кроме того, вы должны иметь возможность указать собственный документ об ошибке 410, который может быть просто пустой страницей html.
это сработало для меня
<VirtualHost x.x.x.x:80 [x:x::x:x:x:x]:80>
ServerName myactualservername.com
ServerAlias *
<Location />
Deny from all
Options None
ErrorDocument 403 Forbidden.
</Location>
</VirtualHost>
замените x.x.x.x на ваши фактические ipv4 и ipv6
замените myactualservername.com на реальный веб-сайт, обслуживаемый машиной
Я использую виртуальный хост на основе имени.
кредит за это решение идет
https://serverfault.com/a/82309/459796