我正在尝试将 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>
但您实际上应该添加更多条件来限制允许代理的域。