使用 IIS7 作为反向代理

使用 IIS7 作为反向代理

我正在家里设置一台服务器来托管几个小型网站。其中一个基于 .NET,需要 IIS,其他基于 PHP,需要 Apache。因此,我的服务器上安装了 IIS 7 和 Apache 2.2.x,IIS 在端口 80 上运行,Apache 在端口 8080 上运行。

我想将 IIS 设置为反向代理,将 Apache 站点的请求转发到端口 8080,并根据主机标头为 .NET 站点本身提供请求。如下所示:

www.mydotnetsite.com/* -> IIS -> serve from IIS
www.myapachesite.com/* -> IIS -> forward to apache on port 8080
www.myothersite.com/*  -> IIS -> forward to apache on port 8080

我进行了一些谷歌搜索,似乎应用程序请求路由功能可以满足我的需要,但我似乎无法让它按照我想要的方式工作。我可以让它将所有流量转发到 Apache 服务器,也可以让它将具有特定 URL 模式的流量转发到 Apache 服务器,但我似乎无法让它根据主机标头进行转发(例如“转发 www.apachesite.com 的所有请求 -> localhost:8080”)

所以问题是,我该如何配置 ARR 来做到这一点?还是我需要其他工具?

如果这样更容易的话,我也愿意使用 Apache 作为反向代理并将 .NET 站点请求转发到 IIS(在端口 80 上运行 Apache,在 8080 上运行 IIS)。

答案1

我建议反过来做。通过在端口 80 上运行 Apache 并让其执行代理任务,在 8080 上运行 IIS,您将遇到的麻烦少得多。

答案2

Eric,这已经是个老问题了,但我会为未来的读者留下关于 ARR 选项的答案。要根据主机标头进行重定向,请在条件部分使用 {HTTP_HOST}。ARR 支持基于所有服务器变量的重定向逻辑,因此您拥有足够的灵活性(与 mod_proxy 一样多)。

相关内容