在配置web服務器的時候,我們經常遇到這樣的問題,由于某些原因,該服務器只能擁有一個公網IP,但是可能需要提供其他機器或者本機上其他webserver的服務器給訪問者,同時又不希望使用其他端口,如果在linux下,常見的解決方案是使用nginx作為前端server,通過反向代理間接訪問其他webserver.在IIS7之前,在windows上要實現該功能卻不是一件容易的事情,但是在IIS7上,通過Application Request Routing模塊,我們可以輕松實現反向代理.
本次測試配置的情況,簡單起見,只在iis中測試,配置3個網站,第一個”LevenWeb”,使用80端口提供服務,第二個”levenblog”,下面運行著levenblog2.0.9,使用8080端口,第三個”phpweb”,下面有一個”test.php”的phpinfo頁面(iis7 php配置本文不再詳述),本機ip:192.168.1.8,為了測試,我們先進行域名綁定,也就是在leven.com.cn下新增3個子域名,域名綁定如下圖所示:
我們的目標如下:
http://phpweb.leven.com.cn/ 訪問phpweb站點,也就是http://localhost:8081/
http://levenblog.leven.com.cn/ 訪問levenblog站點,也就是http://localhost:8080/
http://realblog.leven.com.cn/ 訪問公網上的levenblog站點,也就是http://leven.com.cn/
http://localhost/leven 訪問levenblog站點,也就是http://leven.com.cn/
首先前往http://www.iis.net/extensions/ApplicationRequestRouting下載Application Request Routing,然后安裝,本次實踐使用的是V2版.
安裝完畢之后,新建3個站點:
然后找到ARR配置菜單:
開啟Proxy項:
然后在levenweb站點下配置反向代理路由,配置可以使用UI界面或者直接修改web.config的模式,本次配置給出ui和config文件兩種方式,個人更喜歡config配置文件模式.
進入該項,先配置第一項, http://phpweb.leven.com.cn/ 訪問phpweb站點,也就是http://localhost:8081/,選擇”Add Rules...”:
然后選擇”Blank Rule”
然后填寫如下:

該參數設置表面ARR將攔截所有請求
繼續在”Conditions”中選擇”Add”: