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

我在一台机器上为2个Web服务器创build了2个虚拟机。 一台服务器将运行IIS服务,第二台服务器将运行Apache服务。

如何configuration我的服务器/路由器使2个不同的域使用单个静态IP地址在不同的服务器上工作。

如果你想在标准的HTTP(80)或HTTPS(443)端口上托pipe你的Web服务器,我认为你不能只有两个不同的机器应答域名。

问题是,当你访问某个站点时,你不能通过一个域名访问它 – 你只是使用DNS来将该域名映射到一个IP。 您可以在同一IP上托pipe多个站点的原因是Host标头 – 请参阅RFC 2616的14.23 Host节:

这是如何工作的如下。 假设我们有两个域a.example.com和b.example.com指向相同的IP,比如10.0.0.10。 客户端(通常使用某些Web浏览器)向a.example.com的IP询问DNS。 DNS回复10.0.0.10。 客户端然后发送类似于:

 Host: a.example.com 

当您的Web服务器收到这个消息时,它可以确定您确实需要a.example.com而不是b.example.com(或者该Web服务器上的其他虚拟主机)。

然而在你的例子中,你没有一台服务器 – 你有两台服务器。 路由器只需要根据IP路由到其中的一个 – 主机头在应用层上处理,而在IP层完成路由(参见TCP / IP模型 )。 虽然有些路由器根据应用层做出了一些决定,但我不认为任何人都可以深入到数据包中,根据这个结果来检查HTTP头和路由。

你可以做的是:

  • 使两个VM中的一个成为默认,然后通过代理到另一个
  • 制作第三个虚拟机,将代理当前的虚拟机

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

请参阅关于设置反向代理的这些内容:

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

希望这可以帮助。