在apache2中,根据设计,任何具有未知主机的http请求都将被定向到第一个加载的VirtualHost。有没有办法禁用此功能?换句话说,我想拥有一个Web服务器,用户只能在其中访问显式命名的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>
更新:正如下面和其他地方所建议的,无声地忽略请求可能不是一个好主意,并且可能破坏了HTTP的RFC。但是,由于虚拟主机被设计为模拟具有多个单独的物理HTTP服务器,所以对我而言,无声忽略方法似乎并不合理。这将与基于IP的虚拟主机和对某些IP进行防火墙防护(也许并非针对所有客户端)相同。