IIS Url 重写覆盖外部 URL

IIS Url Rewrite overwriting external urls

在我的开发机器上,我正在尝试将 IIS 配置为反向代理,以将来自端口 443 的请求转发到本地的 nodejs 应用程序 运行。
请求转发正常,但有时 nodejs 应用程序会尝试将浏览器重定向到外部站点,并且 IIS url 重写模块更改也指向本地服务器。

我正在使用 https://localhost/test
访问网站 IIS 将请求重新路由到节点应用 http://localhost:14819/test
节点应用 returns 位置 header 设置为 https://example.com/someroute
的 http 302 IIS 将其转换为 https://localhost/someroute

我希望外部 urls 不被 IIS 影响。这该怎么做? 这是我的Web.config内容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />                
                <rule name="ReverseProxyInboundRule1" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="^test(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTP_HOST}" pattern="^localhost" />
                    </conditions>
                    <action type="Rewrite" url="http://localhost:14819/test{R:1}" logRewrittenUrl="true" />
                </rule>
            </rules>            
        </rewrite>        
    </system.webServer>
</configuration>

If you have any redirect coming back from the backend proxy and you do not want to redirect the Location header coming ,You can do that by unchecking "Reverse rewritehost in response headers" in Application Request Routing

  • Select IIS 管理器中的服务器节点
  • 转到应用程序请求路由缓存
  • 点击服务器代理设置
  • 取消勾选"Reverse rewritehost in response headers"