Iis
使用 URL Rewrite 和 ARR 重定向到同一伺服器
場景:在兩個不同地址下執行單個站點的 Web 伺服器:
- www.mysite.com(正常站點)
- ws1.mysite.com(網路服務)
兩者都可以通過 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。
入站規則成功應用,它永遠不會到達出站規則。
我是否:
- 在這種情況下需要打開 ARR 嗎?
- 需要以某種特殊方式處理 SSL?我只需要它通過。
在這種情況下,在 IIS 中配置的 HTTP 重定向指令受到干擾。
編輯:
在 IIS 管理器的網站節點上,我配置了 HTTP 重定向。“將請求重定向到此目的地”複選框已選中,地址為“ https://www.thisismysite.com ”(減去“這是”。感謝格式化…)。下面,在“重定向行為”下,“將所有請求重定向到確切的目標(而不是相對於目標)。” 選擇的狀態程式碼是“找到 (302)”。
我取消選中“將請求重定向到此目的地”。我仍在試圖弄清楚這實際上是如何解決問題的。