IIS服务器场URL重写配置异常,访问返回502错误求助
IIS 10搭建Server Farm后URL重写引发502错误的解决思路
问题现状
在Windows 10 Enterprise的IIS 10环境中配置Server Farm后,出现以下异常:
- 后端两个站点
http://alwaysup-blue、http://always-green访问正常 - 访问统一入口
http://alwaysup时,返回502 Bad Gateway错误 - 已查看Failed Request Logs,但未定位到根因
当前配置代码
<applicationPools> <add name="always-blue" autoStart="true"> <processModel pingingEnabled="true" pingResponseTime="00:01:30" /> </add> <add name="always-green" autoStart="true"> <processModel pingingEnabled="true" pingResponseTime="00:01:30" /> </add> </applicationPools> <sites> <site name="always-blue" id="2" serverAutoStart="true"> <application path="/" applicationPool="always-blue"> <virtualDirectory path="/" physicalPath="C:\xxx\always-up-blue" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:alwaysup-blue" /> </bindings> </site> <site name="always-green" id="3" serverAutoStart="true"> <application path="/" applicationPool="always-green"> <virtualDirectory path="/" physicalPath="C:\xxx\always-up-green" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:alwaysup-green" /> </bindings> </site> </sites> <rewrite> <globalRules> <rule name="alwaysup rewrite" stopProcessing="false"> <match url=".*" /> <conditions> <add input="{HTTP_HOST}" pattern="^alwaysup$" /> <add input="{SERVER_PORT}" pattern="^80$" /> </conditions> <action type="Rewrite" url="http://alwaysup/{R:0}" /> </rule> </globalRules> </rewrite>
错误日志截图

核心问题与修复步骤
1. 重写规则触发死循环
当前重写规则的目标URL是http://alwaysup/{R:0},当请求http://alwaysup时,规则会持续匹配并重复重写,导致IIS因循环请求溢出返回502。必须将目标指向后端Server Farm节点,而非原入口域名。
2. 修正重写规则并配置Server Farm
- 先确认已创建Server Farm,并将
alwaysup-blue、alwaysup-green添加为后端服务器 - 修改重写规则,将请求转发至Server Farm,同时设置
stopProcessing="true"避免规则重复执行:<rewrite> <globalRules> <rule name="alwaysup rewrite" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{HTTP_HOST}" pattern="^alwaysup$" /> <add input="{SERVER_PORT}" pattern="^80$" /> </conditions> <!-- 替换[YourServerFarmName]为实际创建的Server Farm名称 --> <action type="Rewrite" url="http://[YourServerFarmName]/{R:0}" /> </rule> </globalRules> </rewrite>
3. 基础配置检查
- 确认
always-blue、always-green应用池处于运行状态 - 检查本地hosts文件,确保
alwaysup、alwaysup-blue、alwaysup-green均映射到127.0.0.1 - 验证ARR(Application Request Routing)模块已安装并启用(Server Farm依赖该模块实现反向代理)
4. 日志深度排查
重点查看Failed Request Logs中的以下字段:
- 重写规则的匹配顺序与执行结果
- 后端服务器的响应代码与连接状态
- ARR代理日志中的错误详情(可在IIS管理器的ARR配置中开启)
内容的提问来源于stack exchange,提问作者Amit Shah
相关产品推荐
相关产品推荐

