出於安全考慮,局域網內的機器訪問訪問牆外的網站藉助於代理服務器進行,如果把局域網外Internet想象成一個巨大的資源庫,局域網內的用戶要訪問這個庫裏的資源必須統一通過代理服務器進行。反過來,如果局域網向Internet提供資源,讓Internet上的用戶訪問局域網內的資源也可以設置成一個代理服務器,只不過與我們常用的代理服務器方向正好相反,所以叫反向代理(Reverse Proxy)。
1、代理可分爲三種: 標準的代理緩衝服務器、透明代理緩衝服務器、反向代理緩衝服務器
(1)標準的代理緩衝服務器
這種方式需要在Client瀏覽器配置中指明Proxy的IP地址和端口號。瀏覽器每次都把請求送給Proxy處理。Proxy可以有緩存的功能:它根據請求確定是否連接到Remote Origin Server獲取數據,如果在本地緩衝區有目標數據(cache hit),則直接將緩存數據傳給用戶即可,如果沒有的話則先取回數據(cache miss),先在本地保存一份緩衝,然後將數據發給客戶端瀏覽器。
(2)透明代理緩衝服務器
透明代理緩衝服務器和標準代理服務器的功能完全相同,但是代理操作對客戶端的瀏覽器是透明的(即不需指明代理服務器的IP和端口號)。透明代理服務器阻斷網絡通信,並且過濾出訪問外部的HTTP(80端口)流量。如果客戶端的請求在本地有緩衝則將緩衝的數據直接發給用戶,如果在本地沒有緩衝則向遠程web服務器發出請求,其餘操作和標準的代理服務器完全相同。對於Linux操作系統來說,透明代理使用Iptables或者Ipchains實現。因爲不需要對瀏覽器作任何設置,所以透明代理對於ISP(Internet服務器提供商)特別有用。
(3)反向代理緩衝服務器(surrogate)
反向代理是和前兩種代理完全不同的一種代理服務,使用它可以降低原始web服務器的負載。反向代理服務器承擔了對原始web服務器的靜態頁面的請求,防止原始服務器過載。它位於本地web服務器和Internet之間,處理所有對web服務器的請求,組織了web服務器和Internet的直接通信。如果互聯網用戶請求的頁面在代理服務器上有緩衝的話,代理服務器直接將緩衝內容發送給用戶;如果沒有緩衝,則先向web服務器發出請求,取回數據並在本地緩存後再發送給用戶。這種方式通過降低了向web服務器的請求數,從而降低了web服務器的負載。
2、反向代理有兩種用法:
(1)一種是爲多個網站的Web服務器提供代理,這些網站的域名都指向surrogate,對這些網站的請求全都發給了surrogate,由surrogate轉發HTTP請求給相應網站的origin
server。
(2)一種是爲一個網站的Web服務器集羣提供代理,surrogate作爲負載均衡器決定具體哪個origin
server接收請求。
surrogate總是位於Web服務器的前端,Internet上的用戶對Web服務器的連接要先經過surrogate,然後由surrogate決定哪個Web服務器處理用戶請求,並將請求路由給相應的Web服務器。對靜態內容可以在反向代理上緩存,這樣就不用再向Web服務器路由了。
3、除了緩存和負載均衡,surrogate還能提供如下功能:
(1)安全:反向代理隔離了用戶和Web服務器,用戶很難針對特定的服務器發動攻擊;
(2)數據加密/SSL加速: 某些Web服務器可能不具有SSL加密功能,但是具有加密功能的反向代理服務器可以爲Web服務器提供數據加密,而且裝備了SSL加速硬件的反向代理服務器還能爲Web應用提供了高速的加密通道;
(3)壓縮:代理服務器能壓縮經過的數據以節省帶寬
1、Proxy介於Client和Server中間,它同時扮演了Client和Server的雙重角色:
對於Client而言,Proxy就像一個Server,Proxy處理Client的請求,並將Server的響應轉發給Client;
對於Server而言,Proxy就像一個Client,Proxy轉發Client的請求給Server,並接收Server返回的響應;
2、Proxy可以分爲public proxy和private proxy:
public proxy可以同時爲多個client提供服務,考慮到不同client可能會發出相同的request(例如100個用戶同時訪問新浪網),可以在proxy上caching這些訪問率非常高的網頁,從而大大提高效率;
private proxy僅爲一個client提供服務,通常這樣的私有代理是綁定在client上的,爲該client提供一些擴展服務。
3、Proxy與gateway的區別:
proxy只能連接使用相同協議的應用程序;而gateway可以連接使用不同協議的應用程序,更像一個協議翻譯者(protocol converter);
(但是現在這種區別已經模糊了,一些代理也具有網關的功能)
4、proxy可以作爲local network的filewall,它是通往Internet的唯一出口。所有用戶對公網的訪問都要經過proxy,從而實現一些訪問控制的過濾機制,並保護該局域網免受外網的入侵。下面圖示了proxy的幾類主要功能:
(1)proxy的訪問控制功能(access control):
(2)proxy作爲防火牆(firewall):
(3)proxy作爲內容緩衝(cache):
(4)反向代理(surrogate),位於Internet和Web Server之間,可以分擔Server的負載:
(5)content router
5、proxy在網絡中的部署:
6、proxy怎麼得到流量:
(1)在客戶端瀏覽器中進行配置,讓瀏覽器直接訪問代理服務器而非源服務器。
(2)利用router, gateway的攔截和路由功能,將客戶端流量引導至proxy,這種技術的優點是客戶端不需要做任何配置。
(3)修改DNS映射關係,例如將surrogate配置爲origin server的IP和hostname,這樣來自客戶端的流量將被引導至surrogate中。
(4)修改origin server,將其接收到的請求重定向到proxy中。