我可以配置 IIS 7+ 以根据传入主机名执行动态反向代理吗?

我可以配置 IIS 7+ 以根据传入主机名执行动态反向代理吗?

我正在尝试将 IIS 配置为根据传入主机名代理请求。例如,如果我的代理服务器是位于 www.proxy.com 的 IIS 服务器,则对 www.google.com 的请求。www.proxy.com 将被代理到 www.google.com

我曾尝试设置反向代理,并使用 URL 重写规则将其重写*localhost*为 {R:1}{R:2},但一直没有成功。据我所知,只有提前指定要与哪些服务器进行交互才有可能,但就我而言,这是不可能的(服务器位于 EC2 上,并且一直在动态创建和终止)。

答案1

设置起来其实并不困难。但允许几乎任何域名 www 是否明智呢?.com.www.proxy.com 代理至 www..com 是另一回事。您应该有某种机制来限制要代理的域名。

但无论如何,从技术上讲,您必须使用以下 URL 重写规则设置反向代理(安装了 ARR 模块):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxy" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{CACHE_URL}" pattern="^(https?)://(.*?)\.www\.proxy\.com" />
                    </conditions>
                    <action type="Rewrite" url="{C:1}://{C:2}/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

但您实际上应该添加更多条件来限制允许代理的域。

相关内容