VirtualHost / NameVirtualHost的逻辑是什么?

我理解基于名称的虚拟主机(即,以不同的方式服务两个域名)和基于IP的虚拟主机(即服务两个IP的方式不同)

但…

我应该总是指定一个IP地址,还是可以使用*? 基于名称的虚拟主机的许多例子仍然指定IP地址。 为什么VirtualHost块和NameVirtualHost指令? 为什么我需要NameVirtualHost用于基于IP的虚拟主机?

我应该总是指定一个IP地址,还是可以使用*?

你可以在两个指令中指定*。

NameVirtualHost * <VirtualHost *> ... 

为什么VirtualHost块和NameVirtualHost指令?

NameVirtualHost只定义您将使用名称虚拟主机的IP。 不包含其他指令,所以没有理由为什么应该阻止。 另一方面,VirtualHost包含特定虚拟主机的其他指令,所以它必须是一个块。


为什么我需要NameVirtualHost用于基于IP的虚拟主机?

你不需要它。 看例子 。


推荐阅读: Apache虚拟主机文档