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

问题描述 投票:2回答:2

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

因此,我提议的内容类似于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错误的网关

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

任何有关这方面的帮助将不胜感激。

编辑:

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

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

iis reverse-proxy arr
2个回答
1
投票

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.