我正在尝试为我的网站设置反向代理。基本上,我有一个外部网站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.jpg
example.com/site/images/test.jpg/
test.jpg/
关于如何解决这个问题有什么想法吗?我更愿意在主机级别(而不是虚拟机)进行所有更改 - 但如果我必须更改虚拟机,我可以这样做。
答案1
我不确定你使用什么作为反向代理,以及它是否只是 URL 重写本身,但 ARR 是实现此目的的方法。我整理了一些关于如何将 ARR 设置为反向代理的视频,以及一些需要考虑的技巧。从第 31 周开始查看这里。
ARR 将代理所有请求,包括子页面和子文件夹。然后,您可以在公共 (ARR) 服务器上使用 URL 重写来删除尾部斜杠等,以方便搜索引擎使用。