如何配置 IIS 7.0 的 ARR 和 URL Rewrite 以基于主机进行反向代理。
例如:
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)
仅供参考——公共 DNS website1.mydomain.com 和其余的实际上都指向 mydomain.com 的公共 IP。
请注意,这些服务器并不完全相同。防火墙内部有多个 Web 服务器,还有一个普通的默认 Web 服务器,其端口 80 和 443 暴露在外部。我有一个 IP 地址和一个域名。因此,由于我的防火墙内部有多个 Web 服务器,我需要将主机名子域路由到内部的不同 Web 服务器。
任何详细的步骤都会有极大帮助。
答案1
由于您依赖的是域名而不是 IP(在这种情况下更容易),所以这是最直接的方法:
确保您面向外部的服务器根据主机标头绑定了 3 个站点(website1.mydomain.com 等)。您可以将 IP 地址保留为(全部未分配)。您可能已经完成了此操作。——基本上我的意思是将绑定添加到第一个站点“website1.mydomain.com”,并以类似的方式添加到其他两个站点。这是一个绑定演练。
在 ARR 服务器上的 ARR 中创建 2 个 Web 场。一个连接到 internalserver,另一个连接到 internalserver2。使用这些服务器的主 IP。如果您希望对每个网站进行独特的健康检查,可以设置 3 个不同的 Web 场。其中两个指向同一台服务器是可以的。-- 步骤:创建一个名为 InternalServer 的新服务器场,并向其中添加一台服务器,即“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>
答案2
如果您使用 SonicWALL,您可以执行以下操作:
- 在 WAN 上创建 FQDN 类型的网络 > 地址对象。
- 添加网络>NAT 策略以将该地址对象转换为内部 Web 服务器。
- 在防火墙>访问规则下添加规则以允许 HTTP 流量进入每个服务器。
如果您使用不同的防火墙,请查看是否可以对您的防火墙执行类似操作。
答案3
既然都在同一个服务器上,为什么不直接创建三个独立的网站并绑定到指定的子域呢?