1. 程式人生 > >IIS做反向代理,詳細步驟和解析!

IIS做反向代理,詳細步驟和解析!

一直說在IIS上做反向代理,由於沉迷在nginx一行指令完事的美好情景當中,所以IIS懶得折騰,今天終於下定決心在IIS上折騰一下反向代理,經過一晚上的搗鼓,終於搞定!搞定以後發現其實太簡單了有木有!!(網上教程很暈!)首先說一下,IIS6略古老,想做反向代理也基本沒戲,所以我就用IIS7.5和IIS8.5說事吧!

神馬是反向代理?指以代理伺服器來接受Internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給Internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。我們可以通過反向代理實現負載平衡、突破防火牆限制等一些非常實用的Web伺服器功能,目前反向代理不管在私有云還是公有云的虛擬機器上用的很多很多。

簡要說下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.

(谷歌一下基本就知道意思)

也不知道為啥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以後的版本自己預設就開啟了:

第三步,設定反向代理:

ARR基本設定好了以後,需要進入一個IIS上搭建好的網站進行URL重寫配置,網上給的教程太不好懂了,反向代理可以說分為兩種,一種是多域名繫結,一種是採用虛擬目錄的形式,下面分別介紹。

1.      多域名繫結:

所謂多域名繫結,其實就是指一個或者多個域名(多個不同域名或一個域名的多個A記錄)都指向同一IP,而通過不同的域名訪問的效果還不同,如何實現?就需要使用URL重寫或者重定向,使用URL重寫也就是反向代理的原理。當時圖樣,不懂反向代理,還在ASP.NET頁面裡寫呢,後來改進在XML裡新增……

具體操作如下:

①  開啟IIS的URL重寫

②  右鍵->新增規則,選擇“入站規則”裡的“空白規則”,其他專案忽略,亂點就等著配置失敗吧,我可是深有體會!

裡面的內容可以按照下圖所示填寫,“名稱”隨便寫,然後就在匹配URL裡填個模式,^(.*)表示處理所有格式的URL字串

③  把下面的“條件”展開,點選右邊的“新增”

④  “編輯條件”裡面的專案可以按照下面的圖所示的內容填寫,“條件輸入”填“{HTTP_HOST}”意思是請求的主機名,模式格式為:“^繫結的域名$”,比如我想讓使用者訪問 http://baidu.yuanguozheng.com 時跳轉到百度,也就是對百度做反向代理,就寫成這樣(^baidu.yuanguozheng.com$),前提是填的這個域名必須繫結在你的伺服器IP上。

⑤  接下來填寫操作,預設重寫,不用變,只需要填寫URL,後面跟上“{R:1}”意思是把請求的域名後面的引數也帶過來,確認後,點選右上角的應用即可完成反向代理配置,然後開啟瀏覽器輸入網址即可看到想要的效果。

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一貫的便捷操作在這兒體現不出來了,希望微軟以後還是好好做吧!