![IIS 应用程序请求路由配置问题](https://linux22.com/image/488295/IIS%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%AF%B7%E6%B1%82%E8%B7%AF%E7%94%B1%E9%85%8D%E7%BD%AE%E9%97%AE%E9%A2%98.png)
我正在 IIS 7.0 上配置应用程序请求路由。更多信息可以在这里找到, http://www.iis.net/extensions/ApplicationRequestRouting
我的开发/部署环境是 IIS 7.0 + Windows Server 2008。我有多个网站,每个网站都有稳定版和测试版,例如,我有测试版的订单系统和稳定版的订单系统,采购系统也是如此。我将这 4 个系统部署在 4 台不同的物理机器上(机器名 labvm1、labvm2、labvm3 和 labvm4)。
我的要求是,我希望有一个通用的 URL 模式来访问不同的系统,例如,
http://www.mycorp.com/order/beta
http://www.mycorp.com/order/stable
http://www.mycorp.com/purchase/beta
http://www.mycorp.com/purchase/stable
但是由于这 4 个系统部署在 4 台不同的物理机器上,并且具有不同的机器 /DNS 名称,我该如何设置 URL 重写规则来映射同一个域(http://www.mycorp.com) 具有不同的后缀到不同的物理在线系统?顺便说一句:我希望浏览器中的最终用户能够看到 www.mycorp.com,而不是公开内部机器名称(如 labvm1)。
提前致谢,乔治
答案1
另一种方法是在托管 www.mycorp.com 的服务器上创建重定向。为四个站点中的每一个创建带有虚拟默认页面的虚拟网站,因为您在执行网站创建向导时会需要它。然后,返回每个网站,将 URL 路径更改为托管网站的实际服务器的重定向 URL。
但是,您需要事先为每个网站设置子域名,例如 orderbeta.mycorp.com、orderstable.mycorp.com。将这些子域名指向 DNS 中的每个服务器。因此,当最终用户输入 www.mycorp.com/order/beta 时,重定向会将他们带到 orderbeta.mycorp.com
英国
答案2
嗯,我对此的本能反应是使用 ISA Server 或其他形式的反向代理。我认为 SQUID 也可以做到这一点(而且 SQUID 是免费的)。您只需配置反向代理规则,以便请求路由到适当的内部服务器。就最终用户而言,他们只会看到您的代理服务器,而不知道其背后的所有内容。
如果您想继续使用 MS 软件,那么我 99% 确信 ISA 2006(可能还有更早的版本)使用 Web 服务器发布规则,这实际上是一种反向代理。
JR
George2 问我为什么不推荐 ARR:我确信 ARR 会起作用。但是,虽然我读过白皮书,但我从未愤怒地使用过它。如果我想要一个反向代理,我的直觉告诉我要获得一个反向代理,而不是一个可以执行反向代理的 IIS 插件。如果你可能需要 ARR 可以做的其他技巧,那么显然选择 ARR。