使用 IIS7 作为反向代理

使用 IIS7 作为反向代理

我的问题与列出的问题几乎相同,但他们没有得到答案,因为他们最终使用 Linux 作为反向代理。

使用 IIS7 作为反向代理

我需要以 IIS 作为主站点,以 linux(Apache)作为代理站点。

所以我有

site1.com (IIS7) site2.com (Linux Apache)

他们有子域名

sub1.site1.com sub2.site1.com

sub3.site2.com

我希望所有流量都流向 site1.com,并且说 site2.com 的任何内容都应该代理到内部网络上的 Linux 机器(相信 ARR 可以做到这一点,但不确定如何做到这一点)。

我无法让它以 Apache 的形式运行代理,因为我需要直接公开 IIS。

任何建议都很好。

编辑

我认为这可能会对我有帮助:

<rule name="Canonical Host Name" stopProcessing="true">    
    <match url="(.*)" />    
    <conditions>    
        <add input="{HTTP_HOST}" negate="true" pattern="^cto\.com$" />  
        <add input="{HTTP_HOST}" negate="true" pattern="^antoniochagoury\.com$" />   
        <add input="{HTTP_HOST}" negate="true" pattern="www.antoniochagoury\.com$" />   
    </conditions>    
    <action type="Redirect" url="http://www.cto20.com/{R:1}" redirectType="Permanent" />    
</rule>  

从:http://www.cto20.com/post/Tips-Tricks-3-URL-Rewriting-Rules-Everyone-Should-Use.aspx

当我可以访问 IIS7 框时我会查看这个。

谢谢

答案1

我发誓这个问题已经回答过好几次了。

您需要向 IIS 添加两个软件才能将其用作反向代理:URL 重写和应用程序请求路由 (ARR)。这两个软件都可以从IIS 网站

您可以找到入门文档那里

答案2

您的编辑提到,HTTP_HOST 是域名的服务器变量。您有几个选择。如果 Apache 服务器是公开的,您可以使用像那里一样的重定向。

您需要对 URL 进行反向引用,以便每个站点都有唯一的绑定。

例如,添加第 4 个条件,并确保它位于底部:

(这意味着 - 任何东西 - - 点 - - 任何东西(除了一个点) - - 点 - - 任何东西(除了一个点) - )

现在 {C:1} 将成为对您的二级域名的反向引用,不带 TLD。即 site1、site1。

在你的行动中,你可以使用如下内容:

然后您可以在 Apache 中为 site1.cto20.com、site2.cto20.com 等创建绑定。

另一个选项是设置 ARR 并使用反向代理而不是重定向。这样可以保留原始 URL,并且您的 Apache 服务器不需要公共 URL 或 IP。您的重写规则可以相似,以便每个 URL 都能到达 Apache 服务器上的不同站点。

相关内容