![Apache 基于名称的虚拟主机如何与公共 IP 地址一起工作?](https://linux22.com/image/596076/Apache%20%E5%9F%BA%E4%BA%8E%E5%90%8D%E7%A7%B0%E7%9A%84%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E5%A6%82%E4%BD%95%E4%B8%8E%E5%85%AC%E5%85%B1%20IP%20%E5%9C%B0%E5%9D%80%E4%B8%80%E8%B5%B7%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我是 Apache Web 服务器的新手。配置 Apache Web 服务器时,我们有设置选项name-based virtual host
。
根据我的理解,当用户在 Web 浏览器中输入域名时www.example.com
,它将连接到 DNS 服务器,DNS 服务器会将域名转换为(公共)IP 地址。然后,Web 浏览器将使用该 IP 地址连接到 Web 服务器。
现在,假设我有一台具有公共 IP 地址的服务器。a.a.a.a
我注册了 2 个域名,www.example.com
和www.example1.com
。这两个域名都指向同一个 IP 地址a.a.a.a
。因此,当用户在其 Web 浏览器中输入www.example.com
或时www.example1.com
,DNS 服务器将指向 IP 地址a.a.a.a
。
我已经根据用户指南配置了基于名称的虚拟主机本网站。
但是,我不明白的是:由于 DNS 服务器已经将域名转换为 IP 地址,因此所有用户都将使用 IP 地址连接到 Web 服务器a.a.a.a
。Apache 如何知道用户是否正在使用www.example.com
或www.example1.com
在其 Web 浏览器中?
答案1
http 标头将包含主机。在上面的示例中,主机为 www.example.com 或 www.example1.com。apache 会读取此主机标头,然后使用它向客户端发送正确的虚拟主机。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23