【資訊軟體知識】Proxy是什麼?關於代理/反向代理的大小事

阿Han
·
·
IPFS
·
軟體世界的代理機制,一同來看一下唄!

企業常常有代理人機制, 當我們有重要的事情需要請假時, 就會有代理人幫我們處理公司事務, 相當於「我們授權代理人處理什麼事情」,而這樣的代理機制在軟體世界也是常見的一種機制, 尤其是在分散式運算的架構下。

那代理能為我們帶來什麼好處呢? 又為什麼非用不可? 這也是我們今天著重探討的主題。

其實代理就是你跟我之間隔著一層, 彼此不知道對方, 只知道往哪邊遞送資料, 從而解決雙方的依賴, 尤其伺服器端如果是一群機器在服務, 撇開代理, 用戶端勢必得自己管控要送到哪一台機器去處理, 那刪減及增加機器時怎麼辦? 對於用戶端不就得常常停機,更新這些機器的位置, 這對於應用上來講就大打折扣了,因此有了代理之後,這樣的問題就迎刃而解了。

另外我們可能也聽過反向代理這個詞, 後面也會進行介紹,說明一下什麼是正向代理,什麼又是反向代理。

使用代理帶來哪些好處?

快取

由於Server與Client之間隔著一層Proxy Server,因此該台機器就可以加入緩存機制,當資料未發生變化時,每次Client的存取所看到的結果都會是一樣的,因此我們就可以將緩存的資料直接送往Client端,而不用往伺服器發送,減緩伺服器的壓力。

圖片來源

匿名性

透過Proxy的轉發,Client端並不知道真正處理請求的機器到底是哪一台,只知道要把這個請求送給Proxy請它代理處理。

圖片來源

流量控制

有了Proxy做為中間人,在這裡就能夠掌握流量,並且依序負荷程度進行適當的調配,避免阻塞。

稽核日誌

由於所有請求都會經過Proxy,因此在這裡非常容易掌控來源與目的,想當然也就更容易達到稽核的目的了。

圖片來源

先來搞懂正向代理與反向代理吧!

正向代理

圖片來源

其實正向代理就是以Client端為出發點,Proxy的角色就是中間人,中間人可以為Client進行服務,代為向伺服端發送對應的請求,那麼相對的以這個角度來說,應該站在Client的立場進行服務,包括匿名、翻牆…都是正向代理的服務範疇。

反向代理

圖片來源

而反向代理就不一樣囉,以服務端為出發點,替他們站在最前線,阻擋非必要的需求,就很像PM跟PG的角色,PM站在最前線釐清需求後,再往後派工。

反向代理能夠帶來什麼好處?

  • 負載平衡: 由於運算量比較大的負擔會在伺服器端,因此在最前線的Proxy自然可以做到分散負擔的任務,才不至於太多的請求導致背後的伺服器掛掉,並且進階一點還可以在Proxy到Server之間架設一層防火牆,防火牆只讓Proxy過來的連線通過。
  • 隱藏伺服器的身份,避免被直接攻擊。
  • 快取請求,假設沒有變化的狀況下,可以從快取拿資料進行回應,減少伺服器的負荷。
  • 稽核: 可以記錄所有連線,留下證據,當發生損害時可以追朔。
  • 實驗性功能: 假設我們產品新功能要推出時,通常不會將所有新功能一次推出給所有客戶,並根據需求決定哪些人可以使用新功能,哪些人維持舊功能。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 - 為什麼要加入?

歡迎加入一起練習寫作,賺取知識,累積財富!

⭐ 跟著「阿Han」一起來閱讀、撰寫文章,讓知識變現吧! ⭐

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

阿Han 文字是留下記錄的一種媒介,將知識吸收轉化後輸出成文字進行保存。 ☕️ https://liker.land/willhanchen/civic
  • 来自作者
  • 相关推荐

【Google Sheet 好好玩】 強大的翻譯工具庫

【勞工權益知多少】原來工資不只有基本薪資,還包含了經常性薪資、非經常性薪資...

【程式語言 — Go】關於JSON序列化、反序列化