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

IIS Rewrite转发至外部网站时持续返回502 Bad Gateway错误

解决IIS反向代理外部站点出现502.2 Bad Gateway的问题

你的问题核心是IIS的URL Rewrite模块单独无法完成外部站点的反向代理,必须依赖Application Request Routing (ARR)组件,内部路径正常是因为不需要跨站代理转发,只需本地路由。以下是具体修复步骤:

1. 安装Application Request Routing (ARR)模块

IIS默认不包含ARR组件,需要手动安装:

  • 打开IIS管理器,点击服务器节点,找到右侧“管理”区域的“Web平台安装程序”
  • 在搜索栏输入“Application Request Routing”,找到对应稳定版本点击安装,过程中会自动安装依赖组件

2. 启用ARR的代理功能

安装完成后,需要开启代理支持:

  • 在IIS管理器的服务器节点下,双击“Application Request Routing Cache”
  • 在右侧操作面板点击“Server Proxy Settings”
  • 勾选Enable proxy选项,点击右侧“Apply”保存配置

3. 优化Rewrite规则(可选但推荐)

当前规则会把所有请求都转发到外部站点的首页,若要保留原请求的路径,修改url属性为:

<action type="Rewrite" url="https://about.gitlab.com/{R:1}" logRewrittenUrl="true" />

这样用户访问你的站点/xxx时,会转发到https://about.gitlab.com/xxx,更符合反向代理的预期。

4. 验证后端站点连通性

在IIS服务器本地,用浏览器或命令行工具(如curl https://about.gitlab.com)测试能否正常访问目标外部站点,排除服务器网络防火墙、代理服务器拦截等问题。

5. 调整代理请求头(按需)

如果仍有问题,可尝试保留或修改请求头:

  • 在ARR的“Server Proxy Settings”中,勾选Preserve Host Header,确保原请求的Host头传递到后端站点
  • 或者在Rewrite规则中添加服务器变量设置,强制指定后端Host:
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
    <match url="(.*)" />
    <serverVariables>
        <set name="HTTP_HOST" value="about.gitlab.com" />
    </serverVariables>
    <action type="Rewrite" url="https://about.gitlab.com/{R:1}" logRewrittenUrl="true" />
</rule>

完成以上步骤后,重启IIS站点,反向代理到外部站点的请求应该就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:47:18