apache2の設計では、不明なホストを含むすべてのhttpリクエストは、最初にロードされたVirtualHostに送信されます。この機能を無効にする方法はありますか?言い換えれば、ユーザーが明示的に名前が付けられたVirtualHost定義にのみアクセスできるWebサーバーが欲しいのです。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>
更新:以下および他の場所で提案されているように、静かに要求を無視することは良い考えではなく、おそらくHTTPのRFCを壊します。ただし、仮想ホストは複数の個別の物理HTTPサーバーをシミュレートするように設計されているため、サイレント無視のアプローチは不当に思えません。これは、IPベースの仮想ホスティングや一部のIPをファイアウォールで遮断することと同じです(おそらくすべてのクライアントに対してではない)。