漫話 | 如何給女朋友解釋反向代理?
周末,我正在網(wǎng)上搜索簡歷,準備給團隊招聘新人。這時候,女朋友回來了,她看起來并不是很高興。
反向代理(Reverse Proxy):是指以代理服務(wù)器來接受 Internet 上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 Internet 上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。
正向代理
正向代理(Forward Proxy):是一個位于客戶端和目標服務(wù)器之間的服務(wù)器(代理服務(wù)器),為了從目標服務(wù)器取得內(nèi)容,客戶端向代理服務(wù)器發(fā)送一個請求并指定目標,然后代理服務(wù)器向目標服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。
這種代理其實在生活中是比較常見的。
有時候,用戶想要訪問某國外網(wǎng)站,該網(wǎng)站無法在國內(nèi)直接訪問,但是我們可以訪問到一個代理服務(wù)器,這個代理服務(wù)器可以訪問到這個國外網(wǎng)站。
這樣呢,用戶對該國外網(wǎng)站的訪問就需要通過代理服務(wù)器來轉(zhuǎn)發(fā)請求,并且該代理服務(wù)器也會將請求的響應(yīng)再返回給用戶。這個上網(wǎng)的過程就是用到了正向代理。
這個過程其實和租房子很像。租房子的時候,一般情況下,我們很難聯(lián)系到房東,因為有些房東為了圖方便,只把自己的房屋信息和鑰匙交給中介了。
而房客想要租房子,只能通過中介才能聯(lián)系到房東。對于房東來說,他可能根本不知道真正要租他的房子的人是誰,他只知道是中介在聯(lián)系他。
這里面一共有三個角色,租客(用戶)、中介(代理服務(wù)器)和房東(國外網(wǎng)站,目標服務(wù)器)。
引入中介(代理服務(wù)器)的原因是用戶無法聯(lián)系上房東(用戶無法訪問國外網(wǎng)站)。
所以,正向代理,其實是"代理服務(wù)器"代理了"客戶端",去和"目標服務(wù)器"進行交互。
通過正向代理服務(wù)器訪問目標服務(wù)器,目標服務(wù)器是不知道真正的客戶端是誰的,甚至不知道訪問自己的是一個代理(有時候中介也直接冒充租客)。
正向代理的用途
突破訪問限制
通過代理服務(wù)器,可以突破自身 IP 訪問限制,訪問國外網(wǎng)站,教育網(wǎng)等。即,租客可以通過中介,來解決無法聯(lián)系上房東的問題。
提高訪問速度
通常代理服務(wù)器都設(shè)置一個較大的硬盤緩沖區(qū),會將部分請求的響應(yīng)保存到緩沖區(qū)中。
當其他用戶再訪問相同的信息時, 則直接由緩沖區(qū)中取出信息,傳給用戶,以提高訪問速度。即,中介手里留存了很多房源信息和鑰匙,可以直接帶租客去看房。
隱藏客戶端真實 IP
上網(wǎng)者也可以通過這種方法隱藏自己的 IP,免受威脅。即,房東并不知道租客的真實身份。PS:但是中介知道了,可能騷擾更多….
反向代理
反向代理(Reverse Proxy):是指以代理服務(wù)器來接受 Internet 上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 Internet 上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。
我們在租房子的過程中,除了有些房源需要通過中介以外,還有一些是可以直接通過房東來租的。
用戶直接找到房東租房的這種情況就是我們不使用代理直接訪問國內(nèi)的網(wǎng)站的情況。
還有一種情況,就是我們以為我們接觸的是房東,其實有時候也有可能并非房主本人,有可能是他的親戚、朋友,甚至是二房東。
但是我們并不知道和我們溝通的并不是真正的房東。這種幫助真正的房主租房的二房東其實就是反向代理服務(wù)器。這個過程就是反向代理。
對于常用的場景,就是我們在 Web 開發(fā)中用到的負載均衡服務(wù)器(二房東),客戶端(租客)發(fā)送請求到負載均衡服務(wù)器(二房東)上。
負載均衡服務(wù)器(二房東)再把請求轉(zhuǎn)發(fā)給一臺真正的服務(wù)器(房東)來執(zhí)行,再把執(zhí)行結(jié)果返回給客戶端(租客)。
所以,反向代理,其實是"代理服務(wù)器"代理了"目標服務(wù)器",去和"客戶端"進行交互。
通過反向代理服務(wù)器訪問目標服務(wù)器時,客戶端是不知道真正的目標服務(wù)器是誰的,甚至不知道自己訪問的是一個代理。
反向代理的用途
隱藏服務(wù)器真實 IP
使用反向代理,可以對客戶端隱藏服務(wù)器的 IP 地址。即,租客并不知道房東的真實身份。
負載均衡
反向代理服務(wù)器可以做負載均衡,根據(jù)所有真實服務(wù)器的負載情況,將客戶端請求分發(fā)到不同的真實服務(wù)器上。即,二房東發(fā)現(xiàn)房主本人很忙,于是找到房主的妻子幫忙處理租房事宜。
提高訪問速度
反向代理服務(wù)器可以對于靜態(tài)內(nèi)容及短時間內(nèi)有大量訪問請求的動態(tài)內(nèi)容提供緩存服務(wù),提高訪問速度。即,二房東同樣有房屋信息和鑰匙。
提供安全保障
反向代理服務(wù)器可以作為應(yīng)用層防火墻,為網(wǎng)站提供對基于 Web 的威脅行為(例如 DoS/DDoS)的防護,更容易排查惡意軟件等。
還可以為后端服務(wù)器統(tǒng)一提供加密和 SSL 加速(如 SSL 終端代理),提供 HTTP 訪問認證等。即,二房東可以有效的保護房東的安全。
正向代理和反向代理的區(qū)別
雖然正向代理服務(wù)器和反向代理服務(wù)器所處的位置都是客戶端和真實服務(wù)器之間,所做的事情也都是把客戶端的請求轉(zhuǎn)發(fā)給服務(wù)器,再把服務(wù)器的響應(yīng)轉(zhuǎn)發(fā)給客戶端,但是二者之間還是有一定的差異的。
①正向代理其實是客戶端的代理,幫助客戶端訪問其無法訪問的服務(wù)器資源。反向代理則是服務(wù)器的代理,幫助服務(wù)器做負載均衡,安全防護等。
②正向代理一般是客戶端架設(shè)的,比如在自己的機器上安裝一個代理軟件。而反向代理一般是服務(wù)器架設(shè)的,比如在自己的機器集群中部署一個反向代理服務(wù)器。
③正向代理中,服務(wù)器不知道真正的客戶端到底是誰,以為訪問自己的就是真實的客戶端。而在反向代理中,客戶端不知道真正的服務(wù)器是誰,以為自己訪問的就是真實的服務(wù)器。
④正向代理和反向代理的作用和目的不同。正向代理主要是用來解決訪問限制問題。而反向代理則是提供負載均衡、安全防護等作用。二者均能提高訪問速度。