我正在尝试使用IIS 7.5设置反向代理。我想要一个与Tomcat提供的特定URL模式匹配的传入请求。我在这里使用了教程来配置它。
我的设置如下:
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url=".*/(Locations|FacetedSearch|LocationPage)/.*" />
<action type="Rewrite" url="http://search.xxx.com/{R:1}" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" replace="true" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^http(s)?://search.xxx.com/(.*)" />
<action type="Rewrite" value="http{R:1}://dev.xxx.com/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
<tracing>
HTTP错误500.52 - URL重写模块错误。 当HTTP响应的内容被编码时,不能应用出站重写规则(&#34; deflate&#34;)。
答案 0 :(得分:0)
将此添加到您的网络配置
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
</serverVariables>
或在iis中禁用动态压缩
答案 1 :(得分:0)
在IIS中找到“compress”,然后删除动态内容压缩和静态内容压缩。
答案 2 :(得分:0)
从负责反向代理请求的站点禁用动态和静态内容压缩,并且正在代理的站点为我修复了此错误。
换句话说 - 如果服务器X将请求路由到服务器Y,则在服务器X和Y上的站点上禁用动态和静态内容压缩。
答案 3 :(得分:0)
我也遇到了这个问题,并且发现此解决方案很有帮助:https://www.saotn.org/iis-outbound-rules-with-gzip-compression/
基本上,在入站请求中,HTTP_ACCEPT_ENCODING标头会保存到临时标头中,然后根据出站重写规则恢复。
如果链接失效,请按以下步骤操作:
HTTP_ACCEPT_ENCODING HTTP_X_ORIGINAL_ACCEPT_ENCODING
Server Variable Name: HTTP_X_ORIGINAL_ACCEPT_ENCODING Value: {HTTP_ACCEPT_ENCODING} Server Variable Name: HTTP_ACCEPT_ENCODING Value: ""
如果仅在单个站点上需要此功能,则可以在站点级别而不是服务器级别添加前提条件。