由 IIS 团队
概述
本主题引导读者完成使用应用程序请求路由启动和管理试点或 beta 程序的步骤。 应用程序请求路由可用于定位适当的用户并将其路由到试点站点,或者还可用于限制和管理路由到试点站点的流量量。 本演练重点介绍如何使用应用程序请求路由根据用户配置文件将特定请求路由到试点站点。
目标
配置应用程序请求路由以管理和缓解启动试点计划的风险。
先决条件
本演练需要满足以下先决条件:
- Windows 2008(任何 SKU)或更高版本上的 IIS 7.0 或更高版本。
- Microsoft 应用程序请求路由 1.0 版及其依赖模块。
- 至少有四个包含工作站点和应用程序的内容服务器。 两台服务器将用于模拟生产站点,另外两台服务器将模拟试点站点。
- 在安装了 .NET 3.5 的计算机上,可以使用 Firefox 等替代浏览器,而不是 Microsoft Internet Explorer。 (此设置仅用于测试目的。
按照 本文档 中所述的步骤安装应用程序请求路由。
另一个先决条件是,读者已按照 “定义和配置应用程序请求路由”(ARR)服务器组中所述的步骤定义和配置了两个服务器场。 一个服务器场表示生产环境,另一个服务器场表示试点环境。
步骤 1 - 更改 URL 重写规则以基于用户配置文件路由请求
在此步骤中,URL 重写规则会更改,以便仅将已安装 .NET 3.5 且正在使用 Microsoft Internet Explorer (IE) 的用户路由到试点站点(定义为 pilotSiteServers)。 所有其他路由到生产站点,定义为 productionSiteServers。
若要使用 UI 更改 URL 重写规则,请执行以下操作:
启动 IIS 管理器。
选择服务器场, pilotSiteServers。
将显示以下图标:
双击 “路由规则”。
由于此方案涉及具有 HTTP 请求标头条件匹配的多个服务器场,因此使用公开其他选项的 URL 重写 UI 进行更改。 单击“高级路由”下的“URL 重写”。
请注意,已创建两个规则,但必须对其进行更改。
本演练中规则的顺序很重要。 如果 ARR_productionSiteServers_loadbalance 高于 ARR_pilotServers_loadbalance,则可以在选择规则后使用 “上移 ”或 “下移 ”更改规则的顺序。
选择ARR_pilotSite_Servers_loadbalance,然后单击“操作”窗格中的“编辑...”。
应指定具有 .NET 3.5 的 IE 客户端,以转到 pilotSiteServers 服务器场。 通过添加条件来执行此操作。 单击“ 添加条件”,然后单击 “添加...”。
输入 {HTTP_USER_AGENT} 作为 条件输入 ,将 *MSIE* 输入为 模式。 此条件检查客户端是否正在使用 IE。
添加另一个条件以检查 .NET 版本。 单击 “添加...”,然后输入 {HTTP_USER_AGENT} 作为 条件输入 ,将 *.NET CLR 3.5* 输入为 模式。
最后,取消选中“ 停止处理后续规则 ”复选框,然后单击“ 应用 ”保存更改。
如上所述,规则的顺序很重要。 这是因为当取消勾选停止处理后续规则时,URL 重写会按顺序处理规则。 因此,在这种情况下,将首先考虑第一个规则 ARR_pilotSiteServers_loadbalance。 此规则尝试匹配客户端是否使用 IE 并安装了 .NET 3.5。 如果是这样,请求将转发到 pilotSiteServers 服务器场。 由于“ 停止处理后续规则 ”复选框处于未选中状态,因此它将处理第二个规则 ,ARR_productionSiteServers_loadbalance,这将将所有剩余的请求路由到 productionSiteServers 服务器场。
若要使用命令行更改 URL 重写规则,请执行以下操作:
使用 管理员 权限打开命令提示符。
转到
%windir%\system32\inetsrv。若要更改 ARR_pilotSiteServers_loadbalance 规则以在HTTP_USER_AGENT中检查 IE 和 .NET 3.5,请输入:
appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_pilotSiteServers_loadbalance'].conditions.[input='{HTTP_USER_AGENT}',pattern='*MSIE*']" /commit:apphostappcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_pilotSiteServers_loadbalance'].conditions.[input='{HTTP_USER_AGENT}',pattern='*.NET CLR 3.5*']" /commit:apphost若要取消选择停止处理ARR_pilotSiteServers_loadbalance的后续规则,请输入:
appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_pilotSiteServers_loadbalance'].stopProcessing:"False" /commit:apphost
总结
现在,你已成功更改了 URL 重写中的规则,并利用了应用程序请求路由,仅将一部分用户路由到试点站点。 有关其他应用程序请求路由属性和功能,请参阅其他应用程序请求路由 演练。