基于域名主机的IIS 7反向代理?

Mat*_*ino 5 domain-name-system iis-7 reverse-proxy

我将如何配置 IIS 7.0 的 ARR 和 URL 重写以基于主机进行反向代理。

例如:

http://website1.mydomain.com gets routed internally to internalserver\website1

http://website2.mydomain.com gets routed internally to internalserver2\website2

http://website3.mydomain.com gets routed internally to internalserver2 (default website)
Run Code Online (Sandbox Code Playgroud)

仅供参考 - 公共 DNS 网站 1.mydomain.com 和其他网站实际上都指向 mydomain.com 的公共 IP。

请注意,这不是所有相同的服务器。防火墙内部有多个 Web 服务器和一个普通的默认 Web 服务器,其端口 80 和 443 对外公开。我有一个 IP 地址和一个域名。因此,由于我的防火墙中有多个 Web 服务器,因此我需要将主机名子域路由到内部的不同 Web 服务器。

任何详细的步骤都会有很大帮助。

Sco*_*MVP 5

由于您依赖于域名而不是 IP(在这种情况下更容易),因此这是最直接的方法:

  • 确保您的面向外部的服务器具有基于主机标头(website1.mydomain.com 等)的 3 个站点的绑定。您可以将 IP 地址保留为(全部未分配)。你可能已经这样做了。-- 基本上我的意思是将绑定添加到第一个站点“website1.mydomain.com”,并以类似的方式添加到其他两个站点。这是有关 bindings演练

  • 在 ARR 服务器上的 ARR 中创建 2 个 Web Farm。一个到 internalserver,另一个到 internalserver2。使用这些服务器的主 IP。如果您想对每个网站进行独特的健康检查,您可以设置 3 个不同的 Web Farm。它们中的两个指向同一台服务器是可以的。-- 步骤:创建一个名为InternalServer 的新Server Farm 并向其添加一个服务器,即“internalserver”。然后创建另一个名为 InternalServer2 的服务器场,并在其中添加“internalserver2”。

  • 在创建站点时向导的最后一步,当它询问您是否希望 ARR 为您创建规则时,只在第一次说“是”。记下它创建的规则,以便您可以从中学习。然后删除它。您想管理自己的规则。——我会在下一步解释规则。
  • 然后,您应该在全局级别(IIS 服务器节点,而不是网站节点)设置 3 个 URL 重写规则。URL = .*,使用带有 {HTTP_HOST} 的条件作为您的域名,并且操作应该路由到相应的 webfarm。-- 这是URL 重写介绍。按照这些步骤并输入如下规则:

URL 重写示例:

<rule name="site1" patternSyntax="ECMAScript" stopProcessing="true">
  <match url=".*" />
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_HOST}" pattern="^website1\.mydomain\.com$" />
  </conditions>
  <action type="Rewrite" url="http://InternalServer1/{R:0}" />
</rule>
Run Code Online (Sandbox Code Playgroud)