当同一 Web 服务器上的多个基于名称的虚拟主机共享同一个 IP 时,它们是否一定共享同一个端口?

当同一 Web 服务器上的多个基于名称的虚拟主机共享同一个 IP 时,它们是否一定共享同一个端口?

https://en.wikipedia.org/wiki/Virtual_hosting

基于名称的虚拟主机对同一 IP 地址使用多个主机名。

基于名称的虚拟主机所需的技术前提是支持 HTTP/1.1(如今很常见)的 Web 浏览器,以便在请求中包含目标主机名。这允许在一个 IP 地址后面托管多个站点的服务器提供正确的站点内容。更具体地说,这意味着设置 Host HTTP 标头,这在 HTTP/1.1 中是强制性的。[2]

例如,服务器可能正在接收两个域名 www.example.com 和 www.example.net 的请求,这两个域名解析到同一个 IP 地址。对于 www.example.com,服务器将从目录 /var/www/user/Joe/site/ 发送 HTML 文件,而对于 www.example.net 的请求将使服务器提供来自 /var/www/user/Mary/site/ 的页面。同样,同一域名的两个子域名也可以托管在一起。例如,博客服务器可以同时托管 blog1.example.com 和 blog2.example.com。

当同一 Web 服务器上的多个基于名称的虚拟主机共享同一个 IP 时,它们是否一定共享同一个端口?

谢谢。

答案1

不,端口号是完全独立的。将主机名/IP 地址视为办公室的主要电话号码,将端口号视为您连接到主要号码后拨打的分机号。您可以让多个不同的服务器进程监听同一个 IP 地址,每个进程监听不同的端口号,就像公司中有多个员工,每个员工都接听自己的分机一样。

进一步解释这个比喻,每个员工接听电话时都会使用不同的公司名称来表明自己的身份,具体取决于您说要呼叫哪家公司(即您用来连接的多个虚拟主机名中的哪一个)。这实际上发生在应答服务中,他们可以在接听之前看到您拨打的号码,当他们拿起电话时,他们会用拥有该号码的公司名称来接听。

相关内容