標籤: 暫無標籤

反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。

代理伺服器是使用非常普遍的一種將區域網主機聯入互聯網的一種方式,使用代理上網可以節約緊缺的IP地址資源,而且可以阻斷外部主機對內部主機的訪問,使內部網主機免受外部網主機的攻擊。但是,如果想讓互聯網上的主機訪問內部網的主機資源(例如:Web站點),又想使內部網主機免受外部網主機攻擊,一般的代理服務是不能實現的,需要使用反向代理來實現。

1 反向代理 -定義

什麼是反向代理呢?其實,反向代理也就是通常所說的WEB伺服器加速,它是一種通過在繁忙的WEB伺服器和Internet之間增加一個高速的WEB緩衝伺服器(即:WEB反向代理伺服器)來降低實際的WEB伺服器的負載。

Web伺服器加速(反向代理)是針對Web伺服器提供加速功能的。它作為代理Cache,但並不針對瀏覽器用戶,而針對一台或多台特定Web伺服器(這也是反向代理名稱的由來)。實施反向代理(如上圖所示),只要將Reverse Proxy Cache設備放置在一台或多台Web伺服器前端即可。當互聯網用戶訪問某個WEB伺服器時,通過DNS伺服器解析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web伺服器的IP地址,這時Reverse Proxy Server設備充當Web伺服器,瀏覽器可以與它連接,無需再直接與Web伺服器相連。因此,大量Web服務工作量被卸載到反向代理服務上。不但能夠防止外部網主機直接和web伺服器直接通信帶來的安全隱患,而且能夠很大程度上減輕web伺服器的負擔,提高訪問速度。

2 反向代理 -原理

反向代理伺服器位於本地WEB伺服器和Internet之間。當用戶瀏覽器發出一個HTTP請求時,通過域名解析將請求定向到反向代理伺服器(如果要實現多個WEB伺服器的反向代理,需要將多個WEB伺服器的域名都指向反向代理伺服器)。由反向代理伺服器處理器請求。反向代理一般只緩存可緩衝的數據(比如html網頁和圖片等),而一些CGI腳本程序或者ASP之類的程序不緩存。它根據從WEB伺服器返回的HTTP頭標記來緩衝靜態頁面。有四個最重要HTTP頭標記:
Last-Modified: 告訴反向代理頁面什麼時間被修改
expires: 告訴反向代理頁面什麼時間應該從緩衝區中刪除
Cache-Control: 告訴反向代理頁面是否應該被緩衝
Pragma: 告訴反向代理頁面是否應該被緩衝.

例如:在默認情況下,ASP頁面返回」 Cache-control: private.」 ,所以ASP頁面時不會在反向代理伺服器緩存的

3 反向代理 -比較


下面將對幾種典型的代理服務作一個簡單的比較。在網路上常見的代理伺服器有三種:

1. 標準的代理緩衝伺服器
一個標準的代理緩衝服務被用於緩存靜態的網頁(例如:html文件和圖片文件等)到本地網路上的一台主機上(即代理伺服器)。當被緩存的頁面被第二次訪問的時候,瀏覽器將直接從本地代理伺服器那裡獲取請求數據而不再向原web站點請求數據。這樣就節省了寶貴的網路帶寬,而且提高了訪問速度。但是,要想實現這種方式,必須在每一個內部主機的瀏覽器上明確指明代理伺服器的IP地址和埠號。客戶端上網時,每次都把請求送給代理伺服器處理,代理伺服器根據請求確定是否連接到遠程web伺服器獲取數據。如果在本地緩衝區有目標文件,則直接將文件傳給用戶即可。如果沒有的話則先取迴文件,先在本地保存一份緩衝,然後將文件發給客戶端瀏覽器。

2. 透明代理緩衝伺服器
透明代理緩衝服務和標準代理伺服器的功能完全相同。但是,代理操作對客戶端的瀏覽器是透明的(即不需指明代理伺服器的IP和埠)。透明代理伺服器阻斷網路通信,並且過濾出訪問外部的HTTP(80埠)流量。如果客戶端的請求在本地有緩衝則將緩衝的數據直接發給用戶,如果在本地沒有緩衝則向遠程web伺服器發出請求,其餘操作和標準的代理伺服器完全相同。對於Linux操作系統來說,透明代理使用Iptables或者Ipchains實現。因為不需要對瀏覽器作任何設置,所以,透明代理對於ISP(Internet伺服器提供商)特別有用。

3. 反向代理緩衝伺服器
反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB伺服器的負載。反向代理伺服器承擔了對原始WEB伺服器的靜態頁面的請求,防止原始伺服器過載。它位於本地WEB伺服器和Internet之間,處理所有對WEB伺服器的請求,組織了WEB伺服器和Internet的直接通信。如果互聯網用戶請求的頁面在代理伺服器上有緩衝的話,代理伺服器直接將緩衝內容發送給用戶。如果沒有緩衝則先向WEB伺服器發出請求,取回數據,本地緩存后再發送給用戶。這種方式通過降低了向WEB伺服器的請求數從而降低了WEB伺服器的負載。

4 反向代理 -反向代理伺服器軟體介紹


1. Fikker反向代理伺服器 

Fikker 是一款利於反向代理原理實現的專業級的網站加速伺服器軟體,全界面化管理配置,利用頁面緩存技術(webcache),網站管理員或網站開發人員通過 Fikker 管理平台將指定的頁面緩存起來,用戶在訪問已緩存頁面的時候,就不需要網站讀取資料庫后再生成頁面了,Fikker 直接返回用戶需要的頁面,成倍的提成網站響應速度;另外 Fikker 通過 gzip 將頁面(html,asp,php,css,js)壓縮起來,減少了傳輸尺寸,提高傳輸效率和減少帶寬佔用。  作為網站的前置伺服器,Fikker 還提供了強大的實時監控功能,防盜鏈,源站負載均衡,偽靜態(url靜態化),Ajax跨域操作,防CC攻擊,黑名單管理,訪問統計等一站式解決方案,網站管理簡單到極致,但功能非常強大。
  Fikker 軟體從原始架構開始設計,跨平台(支持 Windows 和 Linux)和面向伺服器類軟體方向設計,經過多年的精雕細琢,穩定性,功能性和易用性大大提升,實現了很多創新,例如:公共緩存,會員緩存和遊客緩存設計。

2 Nginx :  
 Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。Igor 將源代碼以類BSD許可證的形式發布。儘管還是測試版,但是,Nginx 已經因為它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名了。

Nginx的優點
 Nginx做為HTTP伺服器,有以下幾項基本特性: 1.處理靜態文件,索引文件以及自動索引;打開文件描述符緩衝. 2.無緩存的反向代理加速,簡單的負載均衡和容錯.
FastCGI,簡單的負載均衡和容錯.
模塊化的結構。

3 Squid 
對於Web用戶來說,Squid是一個高性能的代理緩存伺服器,可以加快內部網瀏覽Internet的速度,提高客戶機的訪問命中率。Squid不僅支持HTTP協議,還支持FTP、gopher、SSL和WAIS等協議。和一般的代理緩存軟體不同,Squid用一個單獨的、非模塊化的、I/O驅動的進程來處理所有的客戶端請求。Squid將數據元緩存在內存中,同時也緩存DNS查尋的結果,除此之外,它還支持非模塊化的DNS查詢,對失敗的請求進行消極緩存。Squid支持SSL,支持訪問控制。由於使用了ICP,Squid能夠實現重疊的代理陣列,從而最大限度的節約帶寬。Squid由一個主要的服務程序Squid,一個DNS查詢程序 dnsserver,幾個重寫請求和執行認證的程序,以及幾個管理工具組成。當Squid啟動以後,它可以派生出指定數目的dnsserver進程,而每一個dnsserver進程都可以執行單獨的DNS查詢,這樣一來就大大減少了伺服器等待DNS查詢的時間。Squid的另一個優越性在於它使用訪問控制清單(ACL)和訪問許可權清單(ARL)。訪問控制清單和訪問許可權清單通過阻止特定的網路連接來減少潛在的Internet非法連接,可以使用這些清單來確保內部網的主機無法訪問有威脅的或不適宜的站點。

上一篇[通用型伺服器]    下一篇 [莫圖依卡]

相關評論

同義詞:暫無同義詞