In Apache2 wird jede http-Anforderung mit einem unbekannten Host per Design an den ersten geladenen VirtualHost weitergeleitet. Gibt es eine Möglichkeit, diese Funktion zu deaktivieren? Anders gesagt, ich möchte einen Webserver haben, auf dem der Benutzer möglicherweise nur explizit benannte VirtualHost-Definitionen erhält. Jeder andere Hostname, der nicht explizit in einer ServerName- oder ServerAlias-Zeile erwähnt wird, sollte stillschweigend ignoriert werden.
Ist das möglich?
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>
Update: Wie unten und anderswo vorgeschlagen, ist es möglicherweise keine gute Idee, eine Anfrage stillschweigend zu ignorieren, und möglicherweise werden die RFCs für HTTP beschädigt. Da virtuelle Hosts so konzipiert sind, dass sie mehrere separate physische HTTP-Server simulieren, erscheint mir der Ansatz des stillen Ignorierens nicht unangemessen. Dies entspricht dem IP-basierten virtuellen Hosting und dem Firewalling einiger IPs (möglicherweise nicht für alle Clients).