相信大家從小到大應該都會碰到代理伺服器,代理伺服器就像是我們生活中的代理人一樣,會代表著 Client 端或者 Server 端

我們就來進入正題吧

什麼是代理伺服器

在 10 年前,大家點開 ie 的頁面都是 Yahoo ,

網路速度不比現在,都需要等個一兩分鐘,

等個一兩次還好,不過等太多次難免會覺得很煩,

每次點開都需要重新發送請求,然後再等一次

Ning-draw (7)

這時候代理伺服器就出現了,代理伺服器就像是班代的角色,

會代替使用者去跟 Server 端發送請求,

並且將要來的資料在自己身上暫存一份,

等到下個使用者再來請求的時候,就將這份暫存提供給他

Ning-draw (8)

理解了什麼是代理伺服器的概念後,

我們來看正向代理伺服器跟反向代理伺服器就會簡易許多

正向代理伺服器 Forward Proxy

正向代理伺服器就跟我們上面提到的代理伺服器是一樣的概念,

代表 Client 端跟網路發送請求,網路會再將請求傳送給 Server

Ning-draw (9)

我們用個簡單的例子來說明:

當考試成績出來後,學生都要一個一個去找老師拿成績單,

不過一個一個去拿其實蠻麻煩而且沒有效率

這時候我們就可以推派班代去代替整班的學生跟老師拿成績單

生活中的應用

  1. 限制能連線的網站:

以前我們在上電腦課的時候,會想要偷偷連到遊戲網站上玩遊戲,

不過學校沒有那麼笨,在學校內的電腦,都會設定防火牆,

當防火牆有設定限制存取的網站,甚至是限制代理伺服器時,

我們就很難繞過這一層去遊戲網站了

Ning-draw (2)

  1. 保護使用者的資料

當使用者去瀏覽網站時,網站是可以存取到使用者的資訊的,

有了代理伺服器這個角色,使用者會透過代理伺服器去發送請求、接受回應,

所以網站只能知道代理伺服器的資料,並不會知道使用者的資料

Ning-draw (3)

反向代理伺服器

跟正向代理伺服器相反,反向代理伺服器代表的對象就會是 Server 端

Ning-draw (1)

我們用簡單的例子來說:

今天有一群人想跟政府陳情,這時候他們的請求會送給代表人,

代表人會再將這些請求丟給政府的各個機關

等各個政府機關決議好後,就會將結果傳送給代表人

由代表人告訴民眾結果

生活中的應用

  1. 保護 server

當 Server 的資訊赤裸的公開時,難免會受到攻擊,

而反向代理伺服器的角色就能當作 Server 端的擋箭牌,

避免 Server 端被攻擊

Ning-draw (5)

  1. 平衡負載

熱門網站像是 Google 、 Amazon ,一天可能會有上千萬名使用者進站

只有一個 Server 是不可能負荷得了短時間內有上萬個使用者

所以一次應該都會有多台 Server 在跑,

而代理伺服器的角色就會像是交通指揮,指揮哪些請求要去哪個 Server 避免 Server 崩潰

Ning-draw (4)

  1. 代理 SSL

當 Client 端發送請求出去後,需要經過 SSL 握手,確保雙方的身份是對的才可以進行下一步

反向代理伺服器就會幫 Server 充當代理,將加密過的 SSL 訊息解密,之後就會放行請求給 Server

Ning-draw (6)

Cache

當我們今天要瀏覽的網站是美國的網站,可能這網站的伺服器放在美國,

地區遙遠的關係會讓我們在存取的時間上拉長,為了把時間花在同一件事上(每次發送請求都要美國的伺服器拿資料),代理伺服器會將資料快取起來,

不管是正向代理伺服器還是反向代理伺服器,這兩種類都會提供資料快取,

會先將資料暫存在代理伺服器中,等到其他使用者需要存取相同的資料時,就會派上用場

而資料只會暫存一段時間,過一段時間就會消除。