了解 Apache Virtualhosts 文件

了解 Apache Virtualhosts 文件

从 ”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访问正确的站点。

相关内容