週末,我正在網上搜尋簡歷,準備給團隊招聘新人。這時候,女朋友回來了,看起來並不是很高興。
反向代理(reverse proxy):是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。
正向代理
正向代理(forward proxy):是一個位於客戶端和目標伺服器之間的伺服器(代理伺服器),為了從目標伺服器取得內容,客戶端向代理伺服器傳送一個請求並指定目標,然後代理伺服器向目標伺服器轉交請求並將獲得的內容返回給客戶端。
這種代理其實在生活中是比較常見的,比如科學上網技術,其用到的就是代理技術。
有時候,使用者想要訪問某國外網站,該網站無法在國內直接訪問,但是我們可以訪問到一個代理伺服器,這個代理伺服器可以訪問到這個國外網站。這樣呢,使用者對該國外網站的訪問就需要通過代理伺服器來轉發請求,並且該代理伺服器也會將請求的響應再返回給使用者。這個上網的過程就是用到了正向代理。
這個過程其實和租房子很像。
租房子的時候,一般情況下,我們很難聯絡到房東,因為有些房東為了圖方便,只把自己的房屋資訊和鑰匙交給中介了。而房客想要租房子,只能通過中介才能聯絡到房東。而對於房東來說,他可能根本不知道真正要租他的房子的人是誰,他只知道是中介在聯絡他。
這裡面一共有三個角色,租客(使用者)、中介(代理伺服器)和房東(國外網站,目標伺服器)。引入中介(代理伺服器)的原因是使用者無法聯絡上房東(使用者無法訪問國外網站)。
所以,正向代理,其實是"代理伺服器"代理了"客戶端",去和"目標伺服器"進行互動。
通過正向代理伺服器訪問目標伺服器,目標伺服器是不知道真正的客戶端是誰的,甚至不知道訪問自己的是一個代理(有時候中介也直接冒充租客)。
正向代理的用途
突破訪問限制
通過代理伺服器,可以突破自身IP訪問限制,訪問國外網站,教育網等。
即,租客可以通過中介,來解決無法聯絡上房東的問題。
提高訪問速度
通常代理伺服器都設定一個較大的硬碟緩衝區,會將部分請求的響應儲存到緩衝區中,當其他使用者再訪問相同的資訊時, 則直接由緩衝區中取出資訊,傳給使用者,以提高訪問速度。
即,中介手裡留存了很多房源資訊和鑰匙,可以直接帶租客去看房。
隱藏客戶端真實IP
上網者也可以通過這種方法隱藏自己的IP,免受攻擊。
即,房東並不知道租客的真實身份。PS:但是中介知道了,可能騷擾更多….
反向代理
反向代理(reverse proxy):是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。
我們在租房子的過程中,除了有些房源需要通過中介以外,還有一些是可以直接通過房東來租的。使用者直接找到房東租房的這種情況就是我們不使用代理直接訪問國內的網站的情況。
還有一種情況,就是我們以為我們接觸的是房東,其實有時候也有可能並非房主本人,有可能是他的親戚、朋友,甚至是二房東。但是我們並不知道和我們溝通的並不是真正的房東。這種幫助真正的房主租房的二房東其實就是反向代理伺服器。這個過程就是反向代理。
對於常用的場景,就是我們在Web開發中用到的負載均衡伺服器(二房東),客戶端(租客)傳送請求到負載均衡伺服器(二房東)上,負載均衡伺服器(二房東)再把請求轉發給一臺真正的伺服器(房東)來執行,再把執行結果返回給客戶端(租客)。
通過反向代理伺服器訪問目標伺服器時,客戶端是不知道真正的目標伺服器是誰的,甚至不知道自己訪問的是一個代理。
反向代理的用途
隱藏伺服器真實IP
使用反向代理,可以對客戶端隱藏伺服器的IP地址。
即,租客並不房東知道的真實身份。
負載均衡
反向代理伺服器可以做負載均衡,根據所有真實伺服器的負載情況,將客戶端請求分發到不同的真實伺服器上。
即,二房東發現房主本人很忙,於是找到房主的妻子幫忙處理租房事宜。
提高訪問速度
反向代理伺服器可以對於靜態內容及短時間內有大量訪問請求的動態內容提供快取服務,提高訪問速度。
即,二房東同樣有房屋資訊和鑰匙。
提供安全保障
反向代理伺服器可以作為應用層防火牆,為網站提供對基於Web的攻擊行為(例如DoS/DDoS)的防護,更容易排查惡意軟體等。還可以為後端伺服器統一提供加密和SSL加速(如SSL終端代理),提供HTTP訪問認證等。
即,二房東可以有效的保護房東的安全。
正向代理和反向代理的區別
雖然正向代理伺服器和反向代理伺服器所處的位置都是客戶端和真實伺服器之間,所做的事情也都是把客戶端的請求轉發給伺服器,再把伺服器的響應轉發給客戶端,但是二者之間還是有一定的差異的。
1、正向代理其實是客戶端的代理,幫助客戶端訪問其無法訪問的伺服器資源。反向代理則是伺服器的代理,幫助伺服器做負載均衡,安全防護等。
2、正向代理一般是客戶端架設的,比如在自己的機器上安裝一個代理軟體。而反向代理一般是伺服器架設的,比如在自己的機器叢集中部署一個反向代理伺服器。
3、正向代理中,伺服器不知道真正的客戶端到底是誰,以為訪問自己的就是真實的客戶端。而在反向代理中,客戶端不知道真正的伺服器是誰,以為自己訪問的就是真實的客戶端。
4、正向代理和反向代理的作用和目的不同。正向代理主要是用來解決訪問限制問題。而反向代理則是提供負載均衡、安全防護等作用。二者均能提高訪問速度。