IIS 7 反向代理和 HTTP 301 重定向

IIS 7 反向代理和 HTTP 301 重定向

我正在尝试为我的网站设置反向代理。基本上,我有一个外部网站example.com/site/folder,需要反向代理到一些内部虚拟机。以下是一些背景知识

  • 所有机器都运行 Server 2008(标准版)
  • 1 台机器(反向代理server.example.com)有外部 IP
  • 其他几台内部虚拟机运行 IIS 7 和 Server 2008

我已经让反向代理运行起来,我可以成功地将匹配的请求发送example.com/site/folder/site-internal.example.com/folder/

但是,我遇到了内部虚拟机返回的 301 重定向问题。当用户转到 时http://example.com/site/folder没有带尾部斜杠,内部虚拟机会返回一个重定向到folder/。这会导致主机级别出现 404,因为example.com/folder/不存在。

server.example.com我添加了预配置的 URL 重写规则来为我添加尾部斜杠 --- 但是当我启用此规则时,它似乎太宽泛了。虽然它修复了 404 错误并强制客户端在代理之前从folder到,但该规则还会将 添加到常规请求中(即变为)这会导致 VM 级别出现 404,因为没有匹配的文件folder//example.com/site/images/test.jpgexample.com/site/images/test.jpg/test.jpg/

关于如何解决这个问题有什么想法吗?我更愿意在主机级别(而不是虚拟机)进行所有更改 - 但如果我必须更改虚拟机,我可以这样做。

答案1

我不确定你使用什么作为反向代理,以及它是否只是 URL 重写本身,但 ARR 是实现此目的的方法。我整理了一些关于如何将 ARR 设置为反向代理的视频,以及一些需要考虑的技巧。从第 31 周开始查看这里

ARR 将代理所有请求,包括子页面和子文件夹。然后,您可以在公共 (ARR) 服务器上使用 URL 重写来删除尾部斜杠等,以方便搜索引擎使用。

相关内容