Windows-Server-2008

我可以將 IIS 7+ 配置為根據傳入的主機名進行動態反向代理嗎?

  • April 2, 2012

我正在嘗試將 IIS 配置為基於傳入主機名的代理請求。例如,如果我的代理伺服器是位於 www.proxy.com 的 IIS 伺服器,則對 www.google.com.www.proxy.com 的請求將被代理到 www.google.com

我嘗試使用 URL 重寫規則設置反向代理以重寫*localhost*為 {R:1}{R:2},但我沒有任何運氣。根據我的閱讀,只有在我提前明確指定要與之互動的伺服器時才有可能,但在我的情況下,這是不可能的(伺服器在 EC2 上並且一直在動態創建和終止)。

設置起來真的沒那麼難。通過允許幾乎任何域 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>

但是您確實應該添加更多條件來限制您允許代理的域。

引用自:https://serverfault.com/questions/370215