我在 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 匹配。但我不知道问题是什么。
我遗漏了什么?我的方法有缺陷吗?
非常感谢。