Iis 7 HTTP错误500.52-URL重写模块错误。

Iis 7 HTTP错误500.52-URL重写模块错误。,iis-7,reverse-proxy,url-rewrite-module,Iis 7,Reverse Proxy,Url Rewrite Module,我正在尝试使用IIS 7.5设置反向代理。我希望Tomcat提供与特定URL模式匹配的传入请求。我使用了这里的教程来配置它 我的设置如下: <rewrite> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url=".*/(Locations|F

我正在尝试使用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响应的内容被编码(“deflate”)时,无法应用出站重写规则。

将其添加到web配置中

 <serverVariables>
    <set name="HTTP_ACCEPT_ENCODING" value="" />          
 </serverVariables>


或者在iis中禁用动态压缩

在iis中找到“compress”,然后删除动态内容压缩和静态内容压缩。

从负责反向代理请求的站点和正在代理的站点禁用动态和静态内容压缩为我修复了此错误


换句话说,如果服务器X将请求路由到服务器Y,则在服务器X和Y上的站点上禁用动态和静态内容压缩。

我也遇到了这个问题,我发现这个解决方案很有用:

基本上,在入站请求中,HTTP_ACCEPT_编码头被隐藏到一个临时头中,然后根据出站重写规则恢复

在链路失效的情况下,以下步骤:

  • 通过左侧窗格中服务器节点上的IIS管理器GUI,导航到URL重写
  • 单击右窗格中的查看服务器变量
  • 添加两个允许的服务器变量:
  • 返回服务器的URL重写选项,单击右窗格中的查看前提条件。添加一个新的前提条件(我将其命名为NeedsRestoringAcceptencode)
  • 将条件输入设置为{HTTP_X_ORIGINAL_ACCEPT_ENCODING},并将模式设置为“+”(无引号)
  • 在导致错误的入站重写规则上,将以下变量添加到服务器变量(您将在条件部分下面找到):
  • 在出站重写规则中,将从步骤4-5创建的前提条件添加到规则的前提条件部分(应在下拉框中填充)

  • 如果仅在单个站点上需要此功能,则可以在站点级别而不是服务器级别添加前提条件。

    什么是“此”?请加上这个好吗!?eh:)检查这个:它帮助我将reg add HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\InetStp\Rew WRITE/v LogRewrittenUrlEnabled/t reg\U DWORD/d 0添加到我的测试注册表中,您需要在允许的服务器变量下添加以下内容:HTTP\U ACCEPT\U编码、HTTP\U CUST、HTTP\U主机、HTTP\U MAX\U转发、HTTP\U原始服务器\U POST、,https请编辑您的答案,而不是将其放在注释中:)您能告诉我为什么需要在web.config文件中添加
    serverVariables
    ?我还收到出站规则的http错误。那么我应该添加
    serverVariables
    ?我需要在web.config文件中的哪个节点下添加serverVariables?请引导我。谢谢
    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: ""