我们有一个重写配置,将 ARR 视为反向代理,配置如下:
Browser client (OriginA) <-> IIS/ARR (OriginB) <-> Server
客户端是任意数量的 Web 浏览器。我们无法更改此配置。
- 客户请求http://originb/return使用如下 URLhttp://origina/done.html在请求中。
- 然后 ARR 将请求转发给http://服务器/返回。
- 服务器响应
Location
标头设置为http://origina/done.html和 HTTP 302。我已经用 Wireshark 验证了这一点。 - 管道中的某个位置的 IIS 正在将
Location
标头更改为http://originb/done.html。问题就在这里。 - ARR 在标头的 PATTERN_MATCH 步骤中看到 originb URL
Location
。 Location
ARR在 GENERAL_RESPONSE_HEADERS 步骤中将originb URL 报告为标题。- 客户端盲目接受 URL 并重定向到不存在的http://originb/done.html代替http://origina/done.html
我已启动失败请求跟踪,这就是我看到的第 5 步和第 6 步。
什么原因导致 IIS 在 ARR 之前重写Location
标头?我可以使用其他 IIS 工具来解决这个问题吗?
答案1
今天我的 Googlefu 让我失望了。
在Server Proxy Settings
IIS 管理器窗格中,我需要取消选中“在响应标头中反向重写主机”。
答案2
在 IIS 7 中,单击服务器运行 AAR/进行重写(多于站点、应用程序池等) - 然后打开“应用程序请求路由缓存”。在右侧“操作”窗格的“操作”菜单中,在“代理”下,单击“服务器代理设置”。在出现的对话框中,确保“在响应标头中反向重写主机”已启用未选中(见图)。