No apache2 por design, qualquer solicitação http com um host desconhecido será direcionada para o primeiro VirtualHost carregado. Existe uma maneira de desativar esse recurso? Dito de forma diferente, eu quero ter um servidor web em que o usuário possa acessar apenas definições de VirtualHost explicitamente nomeadas. Qualquer outro nome de host não mencionado explicitamente em uma linha ServerName ou ServerAlias deve ser ignorado silenciosamente.
Isso é possível?
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>
Atualização: Como sugerido abaixo e em outros lugares, ignorar silenciosamente uma solicitação pode não ser uma boa idéia e talvez quebre as RFCs para HTTP. No entanto, como os hosts virtuais são projetados para simular vários servidores HTTP físicos separados, a abordagem de ignorar silenciosamente não me parece irracional. Seria o mesmo que hospedagem virtual baseada em IP e firewall de alguns dos IPs (talvez não para todos os clientes).