如何在 1 个静态 IP 上运行 2 个带有 2 个域名的 Web 服务器

如何在 1 个静态 IP 上运行 2 个带有 2 个域名的 Web 服务器

我在一台机器上为 2 个 Web 服务器创建了 2 个 VM。一个服务器将运行 IIS 服务,另一个服务器将运行 Apache 服务。

如何配置我的服务器/路由器,以使 2 个不同的域在具有单个静态 IP 地址的不同服务器上工作。

答案1

如果您想在标准 HTTP(80)或 HTTPS(443)端口上托管您的 Web 服务器,我认为您不能让两台不同的机器仅根据域名来应答。

问题是,当您访问某个网站时,您不是通过域名访问它 - 您只是使用 DNS 将该域名映射到 IP。您可以在同一个 IP 上托管多个网站的原因是 Host 标头 - 请参阅14.23 HostRFC 2616 的部分:

其工作原理如下。假设我们有两个域 a.example.com 和 b.example.com 指向同一个 IP,例如 10.0.0.10。客户端通常使用一些 Web 浏览器向 DNS 询问 a.example.com 的 IP。DNS 回复 10.0.0.10。然后客户端发送如下内容:

Host: a.example.com

当您的网络服务器收到此信息时,它就可以确定您实际上想要的是 a.example.com 而不是 b.example.com(或者可能是该网络服务器上的其他虚拟主机)。

但是,在您的示例中,您没有一台服务器 - 您有两台服务器。路由器需要仅根据 IP 路由到其中一台 - Host 标头在应用程序层处理,而路由在 IP 层完成(请参阅TCP/IP 模型)。虽然有些路由器会根据应用层做出一些决策,但我认为没有任何路由器可以深入到数据包中去检查 HTTP 标头并根据结果进行路由。

您可以做的是:

  • 将两个虚拟机中的一个设为默认虚拟机,然后通过代理连接到另一个虚拟机
  • 创建第三台虚拟机,用于代理当前两台虚拟机

有关虚拟主机的更多信息,请参阅:

请参阅有关设置反向代理的示例:

以下是可用于制作反向代理的模块的参考文档:

希望这可以帮助。

相关内容