【问题标题】:HTTP Error 500.52 - URL Rewrite Module Error.HTTP 错误 500.52 - URL 重写模块错误。
【发布时间】:2012-12-22 06:52:39
【问题描述】:

我正在尝试使用 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”)时,无法应用出站重写规则。

【问题讨论】:

    标签: iis-7 reverse-proxy url-rewrite-module


    【解决方案1】:

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

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

    如果链接失效,步骤如下:

    1. 通过左侧窗格中服务器节点上的 IIS 管理器 GUI,导航到 URL 重写
    2. 单击右侧窗格中的查看服务器变量
    3. 添加两个允许的服务器变量
    HTTP_ACCEPT_ENCODING
    HTTP_X_ORIGINAL_ACCEPT_ENCODING
    
    1. 返回服务器的 URL 重写选项,单击右侧窗格中的 查看前提条件。添加一个新的前置条件(我将其命名为 NeedsRestoringAcceptEncoding
    2. 将条件输入设置为 {HTTP_X_ORIGINAL_ACCEPT_ENCODING},将模式设置为“.+”(无引号)。
    3. 在导致错误的 inbound 重写规则中,将以下内容添加到 Server Variables(您可以在 Conditions 下找到它部分):
    Server Variable Name: HTTP_X_ORIGINAL_ACCEPT_ENCODING
    Value: {HTTP_ACCEPT_ENCODING}
    
    Server Variable Name: HTTP_ACCEPT_ENCODING
    Value: ""
    
    1. outbound 重写规则中,将步骤 4-5 中创建的前提条件添加到规则的 Precondition 部分(应填充在下拉框中)

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

    【讨论】:

      【解决方案2】:

      将此添加到您的网络配置中

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

      或在 iis 中禁用动态压缩

      【讨论】:

      • 什么是“这个”?请问可以加这个吗!?
      • eh :) 看看这个:wrapcode.com/infrastructure/…
      • 它可以帮助我将 reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\Rew rite /v LogRewrittenUrlEnabled /t REG_DWORD /d 0 添加到我的测试注册表中,您需要在允许的服务器变量下添加以下内容: HTTP_ACCEPT_ENCODING、HTTP_CUST、HTTP_HOST、HTTP_MAX_FORWARDS、HTTP_X_ORIGINAL_SERVER_POST、HTTPS
      • 请编辑您的答案,而不是将其放入 cmets :)
      • 你能告诉我为什么我们需要在 web.config 文件中添加serverVariables 吗?我也收到出站规则的 http 错误。那么我应该添加serverVariables 吗?我需要在 web.config 文件中添加 serverVariables 在哪个节点下?请指导我。谢谢
      【解决方案3】:

      在IIS中找到“compress”,然后去掉动态内容压缩和静态内容压缩。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2018-03-21
          • 1970-01-01
          • 2020-05-23
          • 2015-11-27
          • 2018-05-04
          • 1970-01-01
          • 2019-03-24
          • 2011-10-18
          相关资源
          最近更新 更多