目標,使IIS具有類似與Nginx的功能,將指定域名的請求重定向到IIS內、IIS外、其他機器上的其他端口,並且實現https卸載功能
重點預告:
1.安裝最新版urlrewrite(微軟開發的)插件
2.安裝最新版ARR插件(Application Request Routing)
3.添加重定向規則
4.流量:外網==>IIS==>指定網站==》UrlRewrite==》ARR==》你的目標程序的url
如果只轉發到IIS內網站,則不需要ARR。如果要轉發到其他程序或機器,則必須要ARR
如果不需要https卸載可以直接在全局配置規則。
====================正文分割線====================
1.材料
IIS(Windows專業版自帶,如果是server版系統,需要通過功能管理器安裝(無需下載))
urlrewrite插件,https://www.iis.net/downloads/microsoft/url-rewrite
ARR插件(Application Request Routing)https://www.iis.net/downloads/microsoft/application-request-routing。如果只轉發到IIS內網站,則不需要ARR
上面兩個插件均可以通過WebPlatformInstaller 搜索安裝
2.安裝插件
安裝好以上兩個插件,重啟IIS管理器,然后點擊當前主機,就會發現兩個新增的圖標了。如果沒看到的話,重啟IIS、重啟


3.設置綁定
如果不需要https卸載(即外網https流量轉發為http流量)可以跳過這步。
使用默認的Default Site或者新建一個網站。並設置綁定如下圖
根據需求設置端口和ip。
其中主機名設置為*
為什么要設置為*呢,目標是將要所有流量接入該網站。然后通過ARR/Rewrite將指定的流量再轉發出去。
如果你理解了這里的主機名的作用,那么也可以設置指定的一個或多個域名,例如 www.example.com。這樣設置轉發的時候不會影響其他網站,缺點(也是優點)是,只能接入設置了域名的流量。

注意:https需要先導入/創建一個自簽名證書,並在添加https綁定的時候指定該證書。導入證書的圖標在第一張圖中(服務器證書/ServerCertificates)。

4.ARR設置(如果只轉發到IIS內則不需要ARR)

5.添加轉發規則。
這里要注意:
- 規則有兩個地方,一個是IIS管理器中單擊主機名,一個是單擊網站。二者的范圍不言自明,一個是全部流量轉發,一個是只轉發流入指定網站的流量。
- 要實現https卸載,則必須設置網站中的規則。
這里使用網站規則,因此需要先點擊網站,然后雙擊打開UrlRwrite

添加一條空白規則

填上需要的內容


填好了,趕緊保存下。

6.測試
此時,啟動網站,啟動9000端口的程序。瀏覽器輸入 https://a.example.com,如果在本地調試,需要在hosts中配置域名轉向到本地才能測試哦。
如果使用自簽名證書,可能會提示該網站不安全,因為證書的頒發人和目標人都是你自己,而不是第三方受信任的機構。可以把該證書下載下來,然后安裝到 受信任的證書頒發機構中。再次打開即可
ARR中還有個功能比較有意思,叫反向代理抓發,可以實現對流入流量的抓包。

如果使用Fiddler來做反向代理監聽上面的8889端口,可以參考 http://docs.telerik.com/fiddler/configure-fiddler/tasks/usefiddlerasreverseproxy
也就是在 Fiddler Script中找到 OnBeforeRequest 這個函數,在函數中增加下面一句即可
if (oSession.host.toLowerCase() == "127.0.0.1:8889") oSession.host = "127.0.0.1:9000";//目標服務器監聽在127.0.0.1:9000,此時可以在Fiddler中看到入站流量包的詳細信息。
注意:開啟反向代理之后,會在全局UrlRewrite中添加一條所有請求重寫到上述代理的規則,如果只需要過濾指定的請求,可以編輯該規則添加條件。
