IIS反向代理调用Node.js后端API出现HTTP Error 502.2错误
解决IIS反向代理HTTPS后端出现502.2 Bad Gateway的问题
核心原因
直接访问后端API正常但反向代理失败,大概率是IIS的ARR模块不信任后端的自签名HTTPS证书,导致代理请求无法建立安全连接,同时也需要排查Rewrite规则和ARR基础配置的细节。
具体解决步骤
1. 确认ARR模块已安装并启用
URL Rewrite的反向代理功能依赖Application Request Routing(ARR)模块,先完成基础配置:
- 打开IIS管理器,点击服务器节点,检查右侧功能列表是否有Application Request Routing Cache
- 若未安装,需下载匹配IIS版本的ARR和URL Rewrite模块并安装
- 启用代理:点击服务器节点 → 打开Application Request Routing Cache → 右侧点击Server Proxy Settings → 勾选Enable proxy后保存
2. 让ARR信任自签名证书
自签名证书默认不被IIS信任,需手动添加到信任列表:
- 在IIS管理器的服务器节点下,打开Application Request Routing Cache
- 进入Server Proxy Settings → 切换到SSL Offloading标签页
- 勾选Enable SSL Offloading,点击Add按钮导入后端的自签名证书
- 也可通过命令行批量导入(替换证书路径为实际路径):
certutil -addstore "Root" "C:\your-path\backend-cert.cer"
3. 优化Rewrite规则细节
调整现有规则,避免路径或主机名匹配问题:
- 将目标URL中的
127.0.0.1改为localhost,确保和后端证书的通用名称(CN)匹配(自签名证书通常CN为localhost) - 可拆分匹配组确保路径拼接准确,修改后的规则示例:
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true"> <match url="^(apis/)(.*)" /> <action type="Rewrite" url="https://localhost:444/{R:1}{R:2}" appendQueryString="true" logRewrittenUrl="true" /> <conditions> <add input="{REQUEST_METHOD}" pattern="^(GET|POST|PUT|DELETE)$" /> </conditions> </rule>
4. 检查后端站点绑定与权限
- 确认后端站点的HTTPS绑定使用的是目标自签名证书,且绑定主机名为
localhost - 检查后端站点的Authentication设置,确保允许匿名访问或配置了正确的身份验证方式,避免代理请求被拒绝
5. 启用失败请求跟踪排查细节
若以上步骤无效,启用IIS失败请求跟踪定位具体原因:
- 为前端站点启用失败请求跟踪,指定跟踪状态码502.2
- 查看生成的日志文件,可获取代理请求失败的详细触发点(如证书验证错误、连接超时等)
内容的提问来源于stack exchange,提问作者Vivin Prasannaa
相关产品推荐
相关产品推荐

