所以我面对这个问题已经很长一段时间了,并且尝试了多种可能的解决方案,但是似乎没有一个对我有效。我一直得到gzip错误。所以我的后端应用程序运行在Tomcat(Tomee)上。
下面是我的入站规则
<rule name="ApplicationInbound" enabled="true">
<match url="(.*)" />
<action type="Rewrite" url="https://Application:543/{R:0}" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
<set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
</serverVariables>
</rule>
字符串
:
<rule name="ApplicationOutbound" preCondition="NeedsRestoringAcceptEncoding" enabled="false">
<match filterByTags="None" pattern="http(s)?://App\.domain\.local:543/(.*)" />
<action type="Rewrite" value="https://Public:543/{R:0}" />
</rule>
型
前提
<preCondition name="NeedsRestoringAcceptEncoding">
<add input="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+" />
</preCondition>
<preCondition name="NeedsRestoringAcceptEncoding">
<add input="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+" />
</preCondition>
型
Thanks in advance
联系我们
1.当我禁用出站规则时,应用程序加载
1.注册表项reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\Rewrite /v LogRewrittenUrlEnabled /t REG_DWORD /d 0
1.这是我的模块Modules order的顺序
1条答案
按热度按时间mepcadol1#
当HTTP响应的内容被编码(“gzip”)时,无法应用HTTP重写规则。其状态代码为500.52。
这是因为来自后端服务器的响应正在使用HTTP压缩,并且URL重写无法修改已压缩的响应。这会导致出站规则的处理错误,从而导致500.52状态代码。
有两种方法可以解决这个问题:
1.在传递HTTP响应的后端服务器上关闭压缩(这可能是也可能不是,取决于您的配置)。
1.尝试向后端服务器指示客户端不接受压缩响应,方法是在请求进入IIS反向代理时删除标头,并在响应离开IIS服务器时将其放回。
对于第二种方法,我们需要添加两个变量HTTP_ACCEPT_ENCODING和HTTP_X_ORIGINAL_ACCEPT_ENCODING。我们需要在入站规则中使用这些变量,以删除Accept-Encoding头,并在入站规则中使用这些变量将此头放回原处。
您可以尝试在web.config中使用以下重写规则:
字符串
更多信息,你可以参考这个链接:
https://techcommunity.microsoft.com/t5/iis-support-blog/iis-acting-as-reverse-proxy-where-the-problems-start/ba-p/846259