从 ”Apache 手册”,我的注释正确吗?
假设: 的 DNS 已正确配置10.0.0.1
。
ServerName 127.0.0.1 // where Tomcat is running
NameVirtualHost 10.0.0.1:80
<VirtualHost 10.0.0.1:80> // www.TheSmiths.name loads up
// the content at C:/.../TheSmiths
ServerName TheSmiths.name
DocumentRoot "C:/Apache/Sites/TheSmiths"
</VirtualHost>
<VirtualHost 10.0.0.1:80>
ServerName JohnSmith.name // www.JohnSmith.name loads up
// the content at C:/.../JustJohnSmith
DocumentRoot "C:/Apache/Sites/JustJohnSmith"
</VirtualHost>
如果我只输入“ 10.0.0.1
”,那么就会找到第一个虚拟主机,即TheSmiths.name
?
答案1
来自Apache 文档:
如果在包含最具体的匹配 IP 地址和端口组合的虚拟主机集合中未找到匹配的 ServerName 或 ServerAlias,则将使用匹配的第一个列出的虚拟主机。
这意味着如果您将浏览器指向http://10.0.0.1/
(并且不提供Host:
标头),则该请求将由虚拟主机提供服务,因为这是配置中列出的TheSmiths.name
第一个。VirtualHost
答案2
通常,Apache 会访问默认站点(虚拟主机除外)。但是,如果您未启用默认站点,那么它将访问VirtualHost
它找到的第一个站点。
由于NameVirtualHosts
是名称驱动的,这意味着 Apache 将匹配请求的主机名以ServerName
访问正确的站点。