ARR多服务器场不同端口网站URL重写路由失败求助
IIS ARR多站点路由问题解决
场景概述
现有两台服务器:
- DMZ区Web服务器(IIS):负责HTTPS卸载,通过ARR和URL重写将请求转发至内网应用服务器
- 内网应用服务器(IIS):部署业务代码,接收Web服务器转发的HTTP请求
原有正常配置
- Web服务器:默认网站绑定443端口(HTTPS),对应服务器场Farm-1,转发至应用服务器80端口站点
- 应用服务器:主应用网站绑定80端口(HTTP)
新增配置需求
新增一对站点实现独立路由:
- Web服务器:新增网站绑定HTTPS端口,对应服务器场Farm-2,转发至应用服务器8080端口站点
- 应用服务器:新增应用网站绑定8080端口(HTTP)
- 期望效果:
https://www.example.com(443)→Farm-1;https://www.example.com:7443(7443)→Farm-2
现有配置问题
- 端口绑定与规则匹配不一致:Web服务器新增网站实际绑定8443端口,但重写规则中Farm-2的匹配条件是
^7443$,导致请求无法触发对应规则 - Farm-2转发端口未配置:默认服务器场会以80端口转发请求,但应用服务器新增站点绑定的是8080端口,即使规则触发,请求也会访问错误端口
修正步骤
1. 对齐网站绑定与规则端口
根据期望的访问端口7443,修改Web服务器新增网站的HTTPS绑定:
- 打开IIS管理器→新增网站→编辑绑定,将端口从8443改为7443,保存配置
2. 确认URL重写规则(无需修改,若绑定端口未改则调整规则)
如果已将网站绑定改为7443,原规则可直接使用;若需保留8443绑定,将Farm-2规则的条件改为^8443$。修正后的规则示例:
<rewrite> <globalRules> <clear/> <rule name="ARR_Farm-1_loadbalance" patternSyntax="Wildcard" stopProcessing="true"> <match url="*"/> <conditions> <add input="{SERVER_PORT}" pattern="^443$"/> </conditions> <action type="Rewrite" url="http://Farm-1/{R:0}"/> </rule> <rule name="ARR_Farm-2_loadbalance" patternSyntax="Wildcard" stopProcessing="true"> <match url="*"/> <conditions> <add input="{SERVER_PORT}" pattern="^7443$"/> </conditions> <action type="Rewrite" url="http://Farm-2/{R:0}"/> </rule> </globalRules> </rewrite>
3. 配置Farm-2的转发端口
- 打开IIS管理器→Server Farms→选中Farm-2
- 切换到Proxy面板,点击Reverse Proxy Settings
- 勾选「Use the following port for communication」,输入
8080(对应应用服务器新增站点的绑定端口) - 点击「Apply」保存配置
4. 验证生效
- 执行命令重启IIS:
iisreset - 访问
https://www.example.com,确认请求正常路由至Farm-1对应应用站点 - 访问
https://www.example.com:7443,确认请求正常路由至Farm-2对应应用站点
内容的提问来源于stack exchange,提问作者Kumar Lachhani
相关产品推荐
相关产品推荐

