首页 文章

HTTP错误500.52 - URL重写模块错误 .

提问于
浏览
3

我正在尝试使用IIS 7.5设置反向代理 . 我想要一个与Tomcat提供的特定URL模式匹配的传入请求 . 我在这里使用了教程来配置它 .

http://www.iis.net/learn/extensions/url-rewrite-module/reverse-proxy-with-url-rewrite-v2-and-application-request-routing

我的设置如下:

<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”)时,不能应用出站重写规则 .

4 回答

  • 0

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

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

  • 0

    将其添加到您的Web配置中

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

    或者在iis中禁用动态压缩

  • 0

    在IIS中找到“压缩”,然后删除动态内容压缩和静态内容压缩 .

  • 0

    我刚刚遇到这个问题,我发现这个解决方案很有帮助:https://www.saotn.org/iis-outbound-rules-with-gzip-compression/

    基本上,在入站请求中,HTTP_ACCEPT_ENCODING标头被存储到临时标头中,然后在出站重写规则上恢复 .

    在链接失效的情况下,这是以下步骤:

    • 通过左窗格中服务器节点上的IIS管理器GUI,导航到URL重写

    • 单击右窗格中的“查看服务器变量”

    • 添加两个允许的服务器变量:

    HTTP_ACCEPT_ENCODING
    HTTP_X_ORIGINAL_ACCEPT_ENCODING

    • 返回URL重写服务器的选项,单击右窗格中的查看前提条件 . 添加一个新的前置条件(我将其命名为NeedsRestoringAcceptEncoding)

    • 将条件输入设置为,将模式设置为".+"(无引号) .

    • 在导致错误的入站重写规则上,将以下内容添加到服务器变量(您可以在条件部分下找到它):

    服务器变量名称:HTTP_X_ORIGINAL_ACCEPT_ENCODING
    值:

    服务器变量名称:HTTP_ACCEPT_ENCODING
    Value :“”

    • 在出站重写规则中,将步骤4-5中创建的前提条件添加到规则的前提条件部分(应在下拉框中填充)

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

相关问题