反向代理和IIS

我正在尝试做一些应该比较简单的事情,但是我仍然无法做到这一点。

假设我的局域网上有两台虚拟机。 这些机器是用于客户testing目的的Web服务器。 旧的运行IIS6,新的运行IIS7.5

假设我只有一个公用IP地址可供使用。 在原来的情况下,公共IP被映射到旧机器,一切都很好。

现在我需要在这两台机器之间“拆分”这个公共地址。 我想要做的是,根据主机头,“redirect”或“重写”请求到正确的机器。

到目前为止,我尝试使用IIS7的“新”机器作为反向代理,摆弄ARR和Url Rewrite。 我还尝试了与前两个模块结合的“Web Farm框架”。

简短的故事:我无法做到这一点:无论如何,所有请求都被redirect到“旧”机器。

长篇故事:我试图让事情尽可能干净。 我最干净的尝试是制造2个服务器农场,第一个是新机器(这本身),第二个是旧机器。

在我的重写规则中,我把第一条规则是:任何匹配www1。*。mydomain.com的东西都应该路由到webfarm new,然后停止处理。

第二个规则(只有在第一个规则失败的情况下才能被检查)表示与* .mydomain.com匹配的任何内容都会被路由到webfarm旧的。

在这种情况下,一切都被路由到旧的机器。 但是,如果我禁用* .mydomain.com规则,第一个实际工作。 这就好像第二条规则如果启用,优先,即使是在另一个之下。

如果有人有解决这个问题的方法,即使是完全不同的方法,也欢迎你。 我需要根据主机头在这两台机器上分割公共IP。

谢谢。

你想做什么被称为“反向代理”,有很多select。 大多数“负载均衡器”都是具有几个优点的反向代理。

你的select大致如下。

  • 设置一个新的服务器(如NginX或HAProxy)

    • NginX的优势在于它是一个非常简单的设置,具有一些灵活性,比IIS / ARR或HAProxy更less的文档logging和configuration难度

    • HAProxy可能是我列出的最强大的解决scheme,但也有最多的configuration选项

  • 为新服务器上的IIS设置应用程序请求路由(ARR)和URL重写模块,并使每个站点都具有指向内部站点/服务器的ARR规则。

    • 您将需要有一个主机条目,或内部服务器上的每个站点分开的IP绑定。

    • 您需要在公共服务器上设置每个站点或复杂的ARR规则。 我发现在IIS中拥有“自己的”站点的每个站点往往是直截了当的。

在这种情况下的陷​​阱如下。

  • 您的公共代理/ iis实例会因任何原因无法到达内部服务器时返回错误的html。 (如果您在较旧的服务器上有xml或json服务,则可能需要迁移)。

  • Server 2008和2008 R2上的ARR不支持转发WebSocket请求。 我不确定2012年。


我知道这是一个较老的问题,但想做一个更完整的答案。

你还没有真正说明你想要做什么,我猜想将内容分割到多个服务器上。 我认为Ngix会为你的努力工作。 这将有助于知道为什么要使用2台服务器。