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

Chi*_*mar 7 iis-7 reverse-proxy url-rewrite-module

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

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>
Run Code Online (Sandbox Code Playgroud)

HTTP 错误 500.52 - URL 重写模块错误。当 HTTP 响应的内容被编码(“deflate”)时,不能应用出站重写规则。

小智 6

我也刚刚遇到这个问题,我发现这个解决方案很有帮助: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
Run Code Online (Sandbox Code Playgroud)
  1. 返回服务器的 URL 重写选项,单击右侧窗格中的“查看先决条件” 。添加一个新的前提条件(我将其命名为NeedsRestoringAcceptEncoding
  2. 将条件输入设置为{HTTP_X_ORIGINAL_ACCEPT_ENCODING},并将模式设置为“.+”(无引号)。
  3. 在导致错误的入站重写规则上,将以下内容添加到服务器变量(您将在“条件”部分下方找到它):
Server Variable Name: HTTP_X_ORIGINAL_ACCEPT_ENCODING
Value: {HTTP_ACCEPT_ENCODING}

Server Variable Name: HTTP_ACCEPT_ENCODING
Value: ""
Run Code Online (Sandbox Code Playgroud)
  1. 在出站重写规则上,将步骤 4-5 创建的前提条件添加到规则的前提条件部分(应填充在下拉框中)

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


小智 0

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

 <serverVariables>
    <set name="HTTP_ACCEPT_ENCODING" value="" />          
 </serverVariables>
Run Code Online (Sandbox Code Playgroud)

或者在iis中禁用动态压缩