我有一台IP 为 1.2.3.4的单机。这台机器有 2 个 web 服务器和一个 ftp 服务器:
Web Server 1 监听 82 端口;它的域:ws1.example.com
Web Server 2 监听 83 端口;它的域:ws2.example.com
FTP Server 监听 21 端口;它的域:ftp.example.com
这是 DNS 映射的样子:
ws1.example.com CNAME example.com
ws2.example.com CNAME example.com
ftp.example.com CNAME example.com
example.com A 1.2.3.4
案例 1:我在浏览器 URL ws1.example.com:82发出请求, DNS 将我重定向到example.com,但Host标头为:ws1.example.com。
案例 2:我在浏览器 URL ws2.example.com:83发出请求, DNS 将我重定向到example.com,但带有Host标头:ws2.example.com。
在这两种情况下:
请求最终到达同一台物理机
当请求到达时:
在案例 1 中,请求到达这台机器,并且请求由正在侦听端口 82 的应用程序(即 Web 服务器 1)处理。
在案例 2 中,请求到达这台机器,并且该请求由正在侦听端口 83 的应用程序(即 Web 服务器 2)处理。
据我了解, Host标头用于通知接收主机识别哪个服务器(从该IP托管的多个服务器中)是该请求的目的,并相应地将请求定向到适当的应用程序。
我的问题是:
在此示例中,Host标头的用途是什么,因为具有相同 IP 的同一台物理机有多个应用程序在其相应的端口进行侦听。一旦请求到达这台机器,适当的端口无论如何都会被接收,而其他应用程序将忽略该请求,因为该端口与请求不匹配。那么,当适当的端口无论如何都在做他们的工作时,Host标头在这里服务的目的是什么,对吗?
我能推断出吗
- 名称
- 单个 IP 后面的多个 Web 服务器
- 随后将特定用户请求解析到具有Host标头的相应 Web 服务器
仅当您使用诸如反向代理之类的东西时才有意义,例如 1 台机器与客户端接口并将用户请求重定向到不同机器上的相应 Web 服务器,所有机器都在同一端口上侦听,例如 80,每台机器都位于反向代理后面的网络中,其中如果您有ws1.example.com和ws2.exmple.com都被重定向到反向代理example.com并且这个反向代理现在根据Host标头将其转发到适当的主机?