VirtualHost / NameVirtualHost 背后的逻辑是什么

ama*_*ion 3 virtualhost apache-2.2

我了解基于名称的虚拟主机(即以不同方式提供两个域名)和基于 ip 的虚拟主机(即以不同方式提供两个 ip)的概念

但...

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

var*_*tec 6

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

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

NameVirtualHost *    
<VirtualHost *> ...
Run Code Online (Sandbox Code Playgroud)

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

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


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

你不需要它。参见示例


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