Iis

使用 URL Rewrite 和 ARR 重定向到同一伺服器

  • August 10, 2019

場景:在兩個不同地址下執行單個站點的 Web 伺服器:

兩者都可以通過 HTTPS 訪問,並且都在同一個應用程序上執行(無論是 Web 服務呼叫還是正常 www 呼叫都以程式方式處理)。

我在那個 www 站點上有一個網頁,它通過 Javascript 呼叫 ws1 站點上的 Web 服務。這在技術上是一個 CORS 呼叫。但是,為了向後兼容,我想讓呼叫非 CORS。最好的方法是製定一個 URL 重寫規則,將自定義地址(比如 www.mysite.com/ws1/)分叉到 Web 服務位置(ws1.mysite.com),這樣瀏覽器就不會意識到這一點是 CORS(因為最終,它不是“跨源”,真的)。

所以,我在網站上設置了以下規則:

<rewrite>
   <rules>
       <remove name="WS1-Inbound" />
       <rule name="WS1-Inbound" enabled="false">
           <match url="^ws1/(.*)" />
           <conditions />
           <serverVariables />
           <action type="Rewrite" url="https://ws1-mysite.com/{R:1}" logRewrittenUrl="true" />
       </rule>
   </rules>
   <outboundRules>
       <remove name="WS1-Outbound" />
       <rule name="WS1-Outbound" enabled="false">
           <match filterByTags="None" pattern="^https://ws1-mysite.com/(.*)" />
           <conditions />
           <action type="Rewrite" value="ws1/{R:1}" />
       </rule>
   </outboundRules>
</rewrite>

這將返回 404.4。啊,所以我打開ARR,現在我得到一個502.3。

入站規則成功應用,它永遠不會到達出站規則。

我是否:

  1. 在這種情況下需要打開 ARR 嗎?
  2. 需要以某種特殊方式處理 SSL?我只需要它通過。

在這種情況下,在 IIS 中配置的 HTTP 重定向指令受到干擾。

編輯:

在 IIS 管理器的網站節點上,我配置了 HTTP 重定向。“將請求重定向到此目的地”複選框已選中,地址為“ https://www.thisismysite.com ”(減去“這是”。感謝格式化…)。下面,在“重定向行為”下,“將所有請求重定向到確切的目標(而不是相對於目標)。” 選擇的狀態程式碼是“找到 (302)”。

我取消選中“將請求重定向到此目的地”。我仍在試圖弄清楚這實際上是如何解決問題的。

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