?反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器
反向代理可以啟用高級Url策略和管理技術,從而使處于不同web服務器系統的web頁面同時存在于同一個URL空間下
通過IIS安裝反向代理,可以使得IIS和Apache等服務器運行在同一臺機器上,IIS和Apache都可以通過80端口訪問,使得網站的兼容性更強
IIS實現反向代理有兩種方法,IIS6通過第三方工具ISAPI Rewrite來實現反向代理,IIS7以后的版本可以用過微軟自己的URL Rewrite和Application Request Routing來實現反向代理
反向代理IIS6先安裝ISAPI_Rewrite3_0082.msi,安裝完成后,再安裝一個Apache服務器,Apache安裝完成后,設置HTTP端口為8080,HTTPS端口4433,而IIS的HTTP端口為80,HTTPS端口443,IIS和Apache的端口不能沖突
IIS新建一個站點,在網站根目錄建立一個名為 .htaccess 的文件,內容如下,域名請修改為自己的域名
RewriteEngine OnRewriteCompatibility2 OnRepeatLimit 200RewriteBaseRewriteCond %{HTTP:Host} ^www.williamlong.info$RewriteProxy (.*) https://www.williamlong.info:8080$1 [NC,P,H]之后,IIS6+Win2003 配置反向代理到 Apache 就成功了,制定域名可以通過80端口的IIS訪問,而實際網站則是再Apache的8080端口,對于用戶來說是不可見的
IIS7IIS7不用安裝第三方的軟件,本身反向代理軟件微軟就提供,我們使用微軟自己的URL Rewrite和Application Request Routing即可實現反向代理
先安裝URL Rewrite和Application Request Routing,只轉發到IIS內網站,則不需要安裝ARR
安裝完成后,再安裝一個Apache服務器,Apache安裝完成后,設置HTTP端口為8080,HTTPS端口4433,而IIS的HTTP端口為80,HTTPS端口443,IIS和Apache的端口不能沖突
安裝好以上兩個插件,重啟IIS管理器,然后點擊當前主機,就會發現兩個新增的圖標了
點擊Application Request Routing圖標,選擇Server Proxy Settings,勾上Enable proxy并點擊右側的應用
選擇需要反向代理的站點,再選擇“URL重寫”,然后配置入站規則和出站規則
入站規則里,點擊添加規則,選擇空白規則,“名稱”隨便寫,選擇“與模式匹配”,然后就在匹配URL里填個模式,^(.*),“條件輸入”填寫“{HTTP_HOST}”,模式為^www.williamlong.info$,入站規則的操作類型為“重寫”,重寫URL為“https
//www.williamlong.info:8080{R:1}”
出站規則里,點擊添加規則,選擇空白規則,“名稱”隨便寫,匹配模式選擇“響應”,然后就在模式里填寫,href=(.*?)www.williamlong.info
8080(.*?),出站規則的操作類型為“重寫”,重寫數值為“href={R:1}www.williamlong.info/{R:2}”
填好了保存下,即可完成IIS7的反向代理配置
不過,上述方法在針對壓縮網頁的反向代理會報錯,IIS會提示
HTTP 錯誤 500.52 - URL Rewrite Module Error.Outbound rewrite rules cannot be applied when the content of the HTTP response is encoded ("gzip").解決方法可以參考微軟官方的一篇文章,里面詳細描述了解決方法,我這里概括一下操作如下:點擊“查看服務器變量”,點“添加”,增加兩個變量,分別是 HTTP_ACCEPT_ENCODING 和 HTTP_X_ORIGINAL_ACCEPT_ENCODING
之后編輯 web.config 文件,內容如下
來源
月光博客
請立即點擊咨詢我們或撥打咨詢熱線: 18942620423,我們會詳細為你一一解答你心中的疑難。項目經理在線