系統設計入門: Proxies
每次聽到名子特別的proxy,其實是網路結構中client-server中間傳遞訊息與紀錄log的server。
「有個不明駭客(躲在proxy)正在破壞我們的server。」
「我們無法查到他的(IP)位置。」
如電影場景的對話,最早是如透過proxy隱藏IP位置,對伺服器進行破壞,我們就來瞭解一下proxy的定位與功能吧!
(Forward) Proxy
經常直接稱呼為proxies。
當Client要與Server溝通時,例如發request過去,就會先透過forward proxy去提出請求。同時,當Server當收到請求時要回覆也會透過此方式回應。
而VPN的基礎結構也如上圖運作方式進行。因為透過Proxy提出,IP位置會被替代為 P,而非顯示原始IP位置(source ip)。
但實質上的VPN與proxy定位差異與功能仍有所不同,可以參考該篇文章:https://vpnreview.com.tw/vpn-tutorial/what-is-proxy/
Proxy的存在也讓內外網結構得以被區隔出來:
如上右圖架構,因為中間夾層多了proxy server內網無法直接連上外部網路。
Proxy好處:
- 確保匿名機制:因透過proxy收到請求,server端將不知道由誰發問。
- 過濾請求:可以透過proxy server就將部分請求篩掉。(也可以協助修正request,像是改變header或進行加解密等服務)
- 過濾回應:同理過濾請求,回應的內容也可由proxy設立篩選。
- 可以設計caching在proxy server上,降低原server loading。
Reverse Proxy
但特殊情境時,對於Client來說還是發出request,但對client端來說並不知道背後有幾台server提供服務,此時,Reverse Proxy相當於扮演load balancer角色。
最常被用來作為reverse proxy的server叫做nginx(唸做 engine X)。
Reverse Proxy好處:
- 可以用作load balancer,不管client有多少,由中間reverse proxy分配request給實際執行的server。
- 確保server端匿名性。
- 可以進行過濾請求/回應。(同proxy機制)
- 可以設計caching。(同proxy機制)