一直說在IIS上做反向 Proxy,由於沉迷在nginx一行指令完事的美好情景當中,所以IIS懶得折騰,今天終於下定決心在IIS上折騰一下反向 Proxy,經過一晚上的搗鼓,終於搞定!搞定以後發現其實太簡單了有木有!!(網上教程很暈!)首先說一下,IIS6略古老,想做反向 Proxy也基本沒戲,所以我就用IIS7.5和IIS8.5說事吧!
神馬是反向 Proxy?指以Proxy 伺服器來接受Internet上的串連請求,然後將請求轉寄給內部網路上的伺服器,並將從伺服器上得到的結果返回給Internet上請求串連的用戶端,此時Proxy 伺服器對外就表現為一個伺服器。我們可以通過反向 Proxy實現Server Load Balancer、突破防火牆限制等一些非常實用的Web伺服器功能,目前反向 Proxy不管在私人雲端還是公用雲端的虛擬機器上用的很多很多。
第一步,下載安裝ARR(Application Request Routing),http://www.iis.net/downloads/microsoft/application-request-routing:
簡要說下ARR,來自微軟官方的解釋是:
IIS Application Request Routing (ARR) 3enables Web server administrators, hosting providers, and Content DeliveryNetworks (CDNs) to increase Web application scalability and reliability throughrule-based routing, client and host name affinity, load balancing of HTTPserver requests, and distributed disk caching. With ARR, administrators canoptimize resource utilization for application servers to reduce managementcosts for Web server farms and shared hosting environments.
(Google一下基本就知道意思)
也不知道為啥IIS都出到8.5了還不內建,每次還要下載,不過下載、安裝過程很簡單,
這個程式點了,根據網路情況,過一會兒點下一步就自己全安裝完了,Win7/2008自己安裝2.0版本,Win8/8.1/2012安裝3.0,兩個版本功能差的不多,就是自己生產的XML設定檔的寫法不太一樣而已。
第二步,簡要設定ARR:
安裝完成後,IIS裡會多出兩個表徵圖,分別是Application Request Routing和URL重寫。2.0版本(也就是2008或者Win7系統)需要雙擊ApplicationRequest Routing以後,在右側Server Proxy Settings裡,將代理功能開啟,而Win8以後的版本自己預設就開啟了:
第三步,設定反向 Proxy:
ARR基本設定好了以後,需要進入一個IIS上搭建好的網站進行URL重寫配置,網上給的教程太不好懂了,反向 Proxy可以說分為兩種,一種是多網域名稱綁定,一種是採用虛擬目錄的形式,下面分別介紹。
1. 多網域名稱綁定:
所謂多網域名稱綁定,其實就是指一個或者多個網域名稱(多個不同網域名稱或一個網域名稱的多個A記錄)都指向同一IP,而通過不同的網域名稱訪問的效果還不同,如何??就需要使用URL重寫或者重新導向,使用URL重寫也就是反向 Proxy的原理。當時圖樣,不懂反向 Proxy,還在ASP.NET頁面裡寫呢,後來改進在XML裡添加……
具體操作如下:
① 開啟IIS的URL重寫
② 右鍵->添加規則,選擇“入站規則”裡的“空白規則”,其他項目忽略,亂點就等著配置失敗吧,我可是深有體會!
裡面的內容可以按照所示填寫,“名稱”隨便寫,然後就在匹配URL裡填個模式,^(.*)表示處理所有格式的URL字串
③ 把下面的“條件”展開,點擊右邊的“添加”
④ “編輯條件”裡面的項目可以按照下面的圖所示的內容填寫,“條件輸入”填“{HTTP_HOST}”意思是請求的主機名稱,模式格式為:“^綁定的網域名稱$”,比如我想讓使用者訪問http://baidu.yuanguozheng.com時跳轉到百度,也就是對百度做反向 Proxy,就寫成這樣(^baidu.yuanguozheng.com$),前提是填的這個網域名稱必須綁定在你的伺服器IP上。
⑤ 接下來填寫操作,預設重寫,不用變,只需要填寫URL,後面跟上“{R:1}”意思是把請求的網域名稱後面的參數也帶過來,確認後,點擊右上方的應用即可完成反向 Proxy配置,然後開啟瀏覽器輸入網址即可看到想要的效果。
2. 虛擬目錄形式:
虛擬目錄形式就類似:http://test.com/doSomething這樣的連結,有些網站採用了MVC模式,看起來像虛擬目錄,其實不然,這樣的URL重寫,在入站規則上只需要改幾個地方即可。
① 匹配URL中的模式需要加上你需要使用的類似虛擬目錄的字串,如,^和(.*)之間加上虛擬目錄URL即可,如shop/,blog/等
② 條件,去掉次層網域,只保留根網域名稱,其他不變
③ 往往,這樣配置完後可以正常訪問網站,但網頁連結資源,如CSS、JS、圖片等等都有URL問題,所以要配置出站規則,但出站規則不支援動態內容壓縮,所以源網站請關閉動態內容壓縮功能。出站規則的添加類似入站規則,只是在那個視窗中選出站規則即可。
匹配請按圖中所示的方式填寫
④ 然後添加條件,這時請將“條件輸入”填寫成“{URL}”,模式格式為。“^虛擬目錄名/.*”
⑤ 重寫也按如下內容填寫,意思是在資源的相對URL之前加上“/shop”這樣的虛擬目錄名,以便擷取,但是如果是絕對路徑IIS自己就忽略了。應用規則後即可。
大功告成!雖然很高興!但是和nginx的server_name和location比起來,我想死的心都有了,nginx真心方便,只可惜在Windows平台效能遠不及*nix平台,IIS一貫的便捷操作在這兒體現不出來了,希望微軟以後還是好好做吧!
轉載請註明出處:http://blog.csdn.net/yuanguozhengjust/article/details/23576033