VirtualHost / NameVirtualHost 背后的逻辑是什么

VirtualHost / NameVirtualHost 背后的逻辑是什么

我了解基于名称的虚拟主机(即为两个域名提供不同的服务)和基于 IP 的虚拟主机(即为两个 IP 提供不同的服务)的概念

但...

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

答案1

我是否应该始终指定 IP 地址,或者使用 * 就可以吗?

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

NameVirtualHost *    
<VirtualHost *> ...

为什么 VirtualHost 是一个块而 NameVirtualHost 是一个指令?

NameVirtualHost 仅定义您将在其上使用名称虚拟主机的 IP。不包含其他指令,因此没有理由将其阻止。另一方面,VirtualHost 确实包含特定虚拟主机的其他指令,因此它必须是块。


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

你不需要它。看例子


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

相关内容