You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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>

错误日志截图

Failed Request Logs

核心问题与修复步骤

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:34:54