我是 Apache Web 服务器的新手。当我们配置 Apache Web 服务器时,我们可以选择设置name-based virtual host
.
根据我的理解,当用户在www.example.com
网络浏览器中输入域名时,它将连接到 DNS 服务器,该服务器将域名转换为(公共)IP 地址。然后,Web 浏览器将使用 IP 地址连接到 Web 服务器。
现在,假设我有一台带有公共 IP 地址的服务器,a.a.a.a
. 我注册了2个域名www.example.com
,www.example1.com
. 这两个域名都指向同一个 IP 地址,a.a.a.a
. 因此,当用户在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
在他们的网络浏览器中?
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