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

如何在IIS 10中用ARR路由至专用Admin服务器并保留原请求域名

解决ARR代理后浏览器URL跳转到后端主机的问题

问题原因

当前规则使用Rewrite动作本身逻辑正确,但浏览器URL跳转到ADMINHOST,核心原因是后端ADMINHOST返回了包含自身域名的重定向响应(比如301/302状态码,Location头指向http://ADMINHOST/Admin),而ARR默认未对这类响应头做修改,导致浏览器执行跳转。

解决方案

1. 启用ARR反向代理的响应头重写功能

这是解决URL跳转的关键步骤,让ARR自动替换后端返回的Location头中的域名:

  • 打开IIS管理器,选中服务器节点
  • 双击Application Request Routing Cache
  • 在右侧操作栏点击Server Proxy Settings
  • 勾选以下选项:
    • Enable proxy
    • Rewrite HTTP response headers
    • Reverse rewrite host in response headers
  • 点击Apply保存设置

2. 调整URL重写规则

修改现有规则,确保主机头正确传递,同时兼容大小写匹配:

<rule name="Admin Area" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
    <match url="^(admin(/.*)?)$|^(lib_npm/.+)$" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^admin\.wf\.local$" negate="true" />
    </conditions>
    <action type="Rewrite" url="http://ADMINHOST/{R:0}" preserveHostHeader="true" />
</rule>

<rule name="ARR_PCRWeb_loadbalance" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
    <match url=".*" ignoreCase="false" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{PATH_INFO}" pattern="^(/admin(/.*)?)$|^(/lib_npm/.+)$" negate="true" />
    </conditions>
    <action type="Rewrite" url="http://WebFarm/{R:0}" />
</rule>
  • ignoreCase="true":确保匹配/Admin和/admin等大小写变体
  • preserveHostHeader="true":让后端ADMINHOST收到的Host头为www.PUBLICDOMAIN,避免后端生成包含自身域名的链接

3. 检查后端ADMINHOST配置

确认ADMINHOST的站点没有强制重定向到自身域名的规则(比如IIS的URL重写规则、站点绑定的主机头限制),避免后端主动返回带ADMINHOST的重定向。

内容的提问来源于stack exchange,提问作者user3931406

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:12:44