因為工作的關係,最近常常聽到reverse proxy 這個名詞,也就是所謂的反向代理,但一直以來我都對反向代理這個term感到滿滿的疑惑,直到剛剛看了一篇網路文章才終於恍然大悟原來反向代理是這樣一回事。

  首先,要知道這邊的代理指的是代理伺服器,用淺顯易懂的例子來說,他是幫我們跑腿的代辦人,有些跟人家約好要做的事我們可能不想親手去做或者不方便親自去做,這時候就可以請代辦人幫我們去找對方把事情交待給對方處理完成,代理人再回頭告知你結果就好了,而代理伺服器就是這樣的一個角色,它可以幫你的電腦請求轉發給遠端的網站,也可以擋在某個網站的前面收下某地方來的請求再轉給網站內的某台機器做處理,而這時候根據代理伺服器幫助的對象之不同,就有了正向代理與反向代理的區分。

image

  首先來談談什麼是正向代理?正向代理伺服器就是客戶端(也就是你的電腦)透過代理伺服器向遠端網站伺服器發起http請求,很顯然正向代理的伺服器是幫客戶端(也就是你的電腦)代辦事情的。

 

  你可以把正向代理伺服器想像成是一個郵差,通常我們寫好信要發給在國外的親戚朋友我們不用自己跑到國外,把信寫好交給郵差就可以了,郵差就會幫你把信送到國外親戚朋友的手上,這就叫作正向代理。

  那為何需要正向代理呢?其實就跟請郵差送信的道理一樣,有可能我們的電腦要直接訪問國外的某個網站卻因為某些原因被限制存取,這時候就可以透過可以存取到該網站的代理伺服器代我們發送訪問請求而存取國外網站,這招在看國外免費視頻時還滿常用到的,在大陸也稱作翻牆技術,就是透過VPN方式存取FBYoutube,這就是正向代理。

image

  那為何又有反向代理呢?顧名思義反向代理就是反過來伺服器不想直接面對任何客戶端的直接請求,所以也透過代理伺服器幫他接收客戶端的存取要求再轉發給伺服器處理。

  銀行的電話客服人員中的總機就是一個反向代理伺服器!首先,當我們有任何問題要請銀行人員幫忙時(例如掛失信用卡),我們不可能直接打給某一個銀行行員,而是透過銀行信用卡提供的電話總機,然後總機再幫你轉接電話給正好有空服務你的銀行專員。這個總機就是一個反向代理伺服器。

  那麼又為何需要反向代理呢?就像銀行行員一樣,銀行有很多電話專員平常是等著服務打電話來要求協助的客戶的,但是並不是每一個都剛好有空協助客戶,所以就交給總機來負責接客戶電話,再把電話轉給有空的銀行專員進行客服。

  所以反向代理伺服器也可以是負載均衡伺服器(總機),幫忙平均發配電腦存取訊息給背後的實體伺服器(銀行專員),如此不但可以提升服務效率而且也可以保護實體伺服器不會被直接攻擊(例如某個變態的顧客一直打電話騷擾某一個漂亮的銀行專員),這就是反向代理伺服器的概念。

image

  因此反向代理就是實體伺服器網站在自己的前方特別架設的一個代理伺服器,專門接受客戶端的請求,再透過適當策略轉發請求給實體伺服器處理,然後回應。

  到這邊我想大家應該跟我一樣了解正向與反向代理伺服器的意思了,就是郵差與總機的差別。最後下表稍微整理一下正向與反向代理伺服器一些比較上的差異,讓大家可以更多了解他們的不同,至於這些差異的詳細細節,就讓大家自己去尋找了。

  

Proxy

架設端

主要情境

提高訪問速度

保護機器

正向

客戶端

突破訪問限制

IP隱藏

YES

YES

反向

伺服端

負載均衡

安全防護

YES

YES

 

2020623日星期二

arrow
arrow
    創作者介紹
    創作者 jackterrylau 的頭像
    jackterrylau

    儒道哲學的浪漫人生

    jackterrylau 發表在 痞客邦 留言(3) 人氣()