子目录上的 IIS 反向代理破坏了根目录

子目录上的 IIS 反向代理破坏了根目录

我在 IIS 7.5 上运行 HTML 单页应用程序。我正在尝试在子目录中设置反向代理,以便我可以向我的 API 发出同域请求。

所以我希望我的网站可以像这样运行

+ site/
| - index.html
| - app.js
| + api/ (reverse proxy to api server)

不幸的是,我遗漏了一些东西。虽然我的反向代理重写规则似乎有效,但我对 index.html 的请求却没有。对于超出 api/重写规则的任何内容,我都会收到 500 内部服务器错误。

这是我的web.config:

<rewrite>
    <outboundRules>
        <rule name="ReverseProxyOutboundRule1" preCondition="" enabled="true">
            <match filterByTags="A, Form, Img" pattern="^http(s)?://webserver/api/(.*)" />
            <action type="Rewrite" value="http{R:1}://apiserver/{R:2}" />
        </rule>
        <preConditions>
            <preCondition name="ResponseIsHtml1">
                <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
            </preCondition>
        </preConditions>
    </outboundRules>
    <rules>
        <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
            <match url="api/(.*)" />
            <action type="Rewrite" url="http://apiserver/{R:1}" />
        </rule>
    </rules>
</rewrite>

当我打开请求诊断时,我看到错误消息“当 HTTP 响应的内容被编码(“gzip”)时,无法应用出站重写规则。”这让我相信我的出站规则错误地将请求与 index.html 匹配。但我不知道问题是什么。

我遗漏了什么?我的方法有缺陷吗?

非常感谢。

相关内容