Apache 基于名称的虚拟主机如何与公共 IP 地址一起工作?

Apache 基于名称的虚拟主机如何与公共 IP 地址一起工作?

我是 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.comwww.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.comwww.example1.com在其 Web 浏览器中?

答案1

http 标头将包含主机。在上面的示例中,主机为 www.example.com 或 www.example1.com。apache 会读取此主机标头,然后使用它向客户端发送正确的虚拟主机。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23

http://httpd.apache.org/docs/2.2/vhosts/examples.html

相关内容