我了解基于名称的虚拟主机(即为两个域名提供不同的服务)和基于 IP 的虚拟主机(即为两个 IP 提供不同的服务)的概念
但...
我是否应该始终指定 IP 地址,还是可以使用 *?许多基于名称的虚拟主机示例仍然指定 IP 地址。为什么 VirtualHost 是块而 NameVirtualHost 是指令?为什么基于 IP 的虚拟主机需要 NameVirtualHost?
答案1
我是否应该始终指定 IP 地址,或者使用 * 就可以吗?
您可以在两个指令中指定 *。
NameVirtualHost *
<VirtualHost *> ...
为什么 VirtualHost 是一个块而 NameVirtualHost 是一个指令?
NameVirtualHost 仅定义您将在其上使用名称虚拟主机的 IP。不包含其他指令,因此没有理由将其阻止。另一方面,VirtualHost 确实包含特定虚拟主机的其他指令,因此它必须是块。
为什么基于 IP 的虚拟主机需要 NameVirtualHost?
你不需要它。看例子。
推荐阅读:Apache 虚拟主机文档