從租房理解反向代理

來源:https://juejin.im/post/5c737a976fb9a049a81ff5a7

先來一句話:在租房時候,遇到了二房東,就類似於反向代理。

反向代理(reverse proxy):是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。

 

正向代理(forward proxy):是一個位於客戶端和目標服務器之間的服務器(代理服務器),爲了從目標服務器取得內容,客戶端向代理服務器發送一個請求並指定目標,然後代理服務器向目標服務器轉交請求並將獲得的內容返回給客戶端。

這種代理其實在生活中是比較常見的,比如科學上網技術,其用到的就是代理技術。

有時候,用戶想要訪問某國外網站,該網站無法在國內直接訪問,但是我們可以訪問到一個代理服務器,這個代理服務器可以訪問到這個國外網站。這樣呢,用戶對該國外網站的訪問就需要通過代理服務器來轉發請求,並且該代理服務器也會將請求的響應再返回給用戶。這個上網的過程就是用到了正向代理。

這個過程其實和租房子很像。

租房子的時候,一般情況下,我們很難聯繫到房東,因爲有些房東爲了圖方便,只把自己的房屋信息和鑰匙交給中介了。而房客想要租房子,只能通過中介才能聯繫到房東。而對於房東來說,他可能根本不知道真正要租他的房子的人是誰,他只知道是中介在聯繫他。

這裏面一共有三個角色,租客(用戶)、中介(代理服務器)和房東(國外網站,目標服務器)。引入中介(代理服務器)的原因是用戶無法聯繫上房東(用戶無法訪問國外網站)。

所以,正向代理,其實是"代理服務器"代理了"客戶端",去和"目標服務器"進行交互。

通過正向代理服務器訪問目標服務器,目標服務器是不知道真正的客戶端是誰的,甚至不知道訪問自己的是一個代理(有時候中介也直接冒充租客)。

 

正向代理的用途

突破訪問限制

通過代理服務器,可以突破自身IP訪問限制,訪問國外網站,教育網等。

即,租客可以通過中介,來解決無法聯繫上房東的問題。

提高訪問速度

通常代理服務器都設置一個較大的硬盤緩衝區,會將部分請求的響應保存到緩衝區中,當其他用戶再訪問相同的信息時, 則直接由緩衝區中取出信息,傳給用戶,以提高訪問速度。

即,中介手裏留存了很多房源信息和鑰匙,可以直接帶租客去看房。

隱藏客戶端真實IP

上網者也可以通過這種方法隱藏自己的IP,免受攻擊。

即,房東並不知道租客的真實身份。

 

 

 

反向代理

反向代理(reverse proxy):是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。

我們在租房子的過程中,除了有些房源需要通過中介以外,還有一些是可以直接通過房東來租的。用戶直接找到房東租房的這種情況就是我們不使用代理直接訪問國內的網站的情況。

還有一種情況,就是我們以爲我們接觸的是房東,其實有時候也有可能並非房主本人,有可能是他的親戚、朋友,甚至是二房東。但是我們並不知道和我們溝通的並不是真正的房東。這種幫助真正的房主租房的二房東其實就是反向代理服務器。這個過程就是反向代理。

對於常用的場景,就是我們在Web開發中用到的負載均衡服務器(二房東),客戶端(租客)發送請求到負載均衡服務器(二房東)上,負載均衡服務器(二房東)再把請求轉發給一臺真正的服務器(房東)來執行,再把執行結果返回給客戶端(租客)。

所以,反向代理,其實是"代理服務器"代理了"目標服務器",去和"客戶端"進行交互。

通過反向代理服務器訪問目標服務器時,客戶端是不知道真正的目標服務器是誰的,甚至不知道自己訪問的是一個代理。

 

 

反向代理的用途

隱藏服務器真實IP

使用反向代理,可以對客戶端隱藏服務器的IP地址。

即,租客並不房東知道的真實身份。

負載均衡

反向代理服務器可以做負載均衡,根據所有真實服務器的負載情況,將客戶端請求分發到不同的真實服務器上。

即,二房東發現房主本人很忙,於是找到房主的妻子幫忙處理租房事宜。

提高訪問速度

反向代理服務器可以對於靜態內容及短時間內有大量訪問請求的動態內容提供緩存服務,提高訪問速度。

即,二房東同樣有房屋信息和鑰匙。

提供安全保障

反向代理服務器可以作爲應用層防火牆,爲網站提供對基於Web的攻擊行爲(例如DoS/DDoS)的防護,更容易排查惡意軟件等。還可以爲後端服務器統一提供加密和SSL加速(如SSL終端代理),提供HTTP訪問認證等。

即,二房東可以有效的保護房東的安全。

 

 

 

正向代理和反向代理的區別

雖然正向代理服務器和反向代理服務器所處的位置都是客戶端和真實服務器之間,所做的事情也都是把客戶端的請求轉發給服務器,再把服務器的響應轉發給客戶端,但是二者之間還是有一定的差異的。

1、正向代理其實是客戶端的代理,幫助客戶端訪問其無法訪問的服務器資源。反向代理則是服務器的代理,幫助服務器做負載均衡,安全防護等。

2、正向代理一般是客戶端架設的,比如在自己的機器上安裝一個代理軟件。而反向代理一般是服務器架設的,比如在自己的機器集羣中部署一個反向代理服務器。

3、正向代理中,服務器不知道真正的客戶端到底是誰,以爲訪問自己的就是真實的客戶端。而在反向代理中,客戶端不知道真正的服務器是誰,以爲自己訪問的就是真實的客戶端。

4、正向代理和反向代理的作用和目的不同。正向代理主要是用來解決訪問限制問題。而反向代理則是提供負載均衡、安全防護等作用。二者均能提高訪問速度。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章