使用IIS和ARR反向代理返回“服务器返回无效或无法识别的响应”

时间:2013-12-19 13:08:08

标签: iis reverse-proxy arr

我正在从一个站点迁移到另一个站点,虽然这些站点位于同一台服务器上,但它们不在同一个应用程序池中。

因此,我提议的内容类似于IIS文章“Reverse Proxy with URL Rewrite v2 and Application Request Routing”。

我的设置如下:

  • 默认网站(接受*:80和*:443上的连接)。
  • 新网站(接受*:81上的连接)

我在ARR模块中启用了代理,并在“新网站”中有一个重写规则。目前,我在新网站(新页面)中只有一个页面,但随着我们迁移,这将逐渐增加。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Reverse Proxy to New Website" stopProcessing="true">
          <match url="^new-page" />
          <action type="Rewrite" url="http://www.mysite.com:81/new-page" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

当我访问www.mysite.com/index.htm时,我会看到我的旧主页,这是正确的。

但是,如果我访问www.mysite.com/new-page,我收到错误:

  

HTTP错误502.3网关错误

     

服务器返回无效或无法识别的响应

HTTP Error 502.3 - Bad Gateway - The server returned an invalid or unrecognized response

对此的任何帮助将不胜感激。

修改

我还启用了WinHttp跟踪,可以找到今天的请求日志here at pastebin

我在下面有一些进一步的信息(从IIS失败的请求记录中检索)。

Request Diagnostics for www.mysite.com:80/new-page

2 个答案:

答案 0 :(得分:1)

ARR似乎存在包含空格的标题的问题。

新应用程序有一个带空格的标题,并用连字符替换它来解决问题。

答案 1 :(得分:0)

我刚遇到这个。但是,我的问题与Cookie冲突有关。

一个好的测试是使用其他浏览器(或在Chrome中隐身)。如果可以在其他浏览器上使用,则可能是Cookie。尝试删除Cookie,以查看是否有帮助。如果可以控制,请尝试在您可能拥有的不同站点/环境之间更改Cookie名称。如果这超出了您的控制范围(您正在对所购买的某些工具进行反向代理,则可能无法实现)。