iis HTTP错误500.52

bksxznpy  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(143)

所以我面对这个问题已经很长一段时间了,并且尝试了多种可能的解决方案,但是似乎没有一个对我有效。我一直得到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的顺序

mepcadol

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中使用以下重写规则:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ApplicationInbound" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="https://App.domain.local:543/{R:1}" />
                    <serverVariables>
                        <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                        <set name="HTTP_ACCEPT_ENCODING" value="" />
                    </serverVariables>
                </rule>
            </rules>
            <outboundRules>
                <rule name="ApplicationOutbound" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^https://App\.domain\.local:543/(.*)" />
                    <action type="Rewrite" value="https://Public:543/{R:1}" />
                </rule>
                <rule name="RestoreAcceptEncoding" preCondition="NeedsRestoringAcceptEncoding">
                    <match serverVariable="HTTP_ACCEPT_ENCODING" pattern="^(.*)" />
                    <action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                    <preCondition name="NeedsRestoringAcceptEncoding">
                        <add input="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

字符串
更多信息,你可以参考这个链接:
https://techcommunity.microsoft.com/t5/iis-support-blog/iis-acting-as-reverse-proxy-where-the-problems-start/ba-p/846259

相关问题