web developer tips (36):使用IIS7.0 应用请求路由模块管理网站的beta版程序
原文地址:How to manage pilot or beta program for your site using Application Request Routing in IIS7.0
如果给你网站适合的用户设置目标和路由,用来使用试用/bate/新程序来查找用户资料,是不是件很酷的事?这对于管理曾经在试用版注册过的用户是有帮助,把这些用户重新跳转到一个新的网站,继续收集反馈,当你的网站发生重大的改变,这是非常典型的情况。IIS 7.0 的应用请求路由模块(Application Request Routing (ARR) module)可以帮助你实现这个功能。另一个典型的情况是,将对路由到试用网站的流量的管理和限制很有帮助。
这有个例子,我们希望所有安装了NET Framework 3.5和使用IE的用户都跳转到试用站点。使用ARR来实现这一点,步骤如下:
1、启动IIS管理器。
2、创建一个服务区(Server Farm),命名为“pilotSiteServers”。有关创建服务区的步骤见:Define and Configure an Application Request Routing Server Farm,这个服务区代表一个测试环境。
3、创建另一个服务器命名为“productionSiteServers”,这个服务区代表一个产品环境。
4、选中“ pilotSiteServers”服务区。 如下图所示,将会显示一些图标
5、双击“Routing Rules”图标
6、点击“Advanced Routing”下的"URL Rewrite". 因为这个方案设计多个匹配http 请求服务区,所以我们将使用url rewite UI 来新增规则。单击“Advanced Routing”下面的“"URL Rewrite”。
7、你会发现已经添加了两条规则;
8、这些规则必须要修改。规则的顺序是非常重要的。等下,我会做出解释。如果ARR_productionSiteServers_loadbalance在ARR_pilotSiteServers_loadbalance 之上,选中规则通过“Move Up”和“Move Down”来改变规则的顺序。
9、选中“ARR_pilotSiteServers_loadbalance” ,单击“edit...”
10、现在我们需要定义规则。记住,我们的目标是“所有安装了NET Framework 3.5和使用IE的用户都跳转到试用站点”
11、单击“Add Conditions”
12、在“ Condition input”项输入“{HTTP_USER_AGENT}”,在“Pattern”项输入“ *MSIE*”
13、 增加另一个规则,在“Condition input”项输入“{HTTP_USER_AGENT}”,在“Pattern”项输入“ *.NET CLR 3.5*”
14、最后不选中“"Stop processing of subsequent rules”(随后停止处理规则),然后单击“应用”保存设置。
15、让我解释一下规则顺序的重要性。这是因为在未选中“Stop processing of subsequent rules”时URL rewriter 规则是按顺序执行。因此这个在这个例子中,“ARR_pilotSiteServers_loadbalance” 规则将会被首先执行,这个规则尝试匹配客户端是否使用IE和已安装 .NET Framework 3.5,如果匹配,请求将会转到“ pilotSiteServers”服务区。因为没有选中“Stop processing of subsequent rules”项,接着第二条规则将会执行。这意味着“ARR_productionSiteServers_loadbalance”规则也将会执行,这将路由其他所有请求到“productionSiteServers”服务区。
自此就完成了所有设置。有关URL rewriter 规则的正则表达是的详细书写规则,请参考:Pilot program management using Application Request Routing
Application Request Routing(ARR)是一个基于代理的路由模块,可以根据HTTP头、服务器变量和负载均衡算法将HTTP请求转发到内容服务器上。它增强应用程序的效率和可扩展性,以便利用内容服务器资源,简化应用程序的部署。不过ARR支持IIS 7.0 。有关ARR 更详细的内容见:Application Request Routing。
可以通过 Platform Installer (Web PI)来安装这个模块。
更多文章见:守望轩[http://www.watch-life.net/]