簡介
這週,我們將介紹在一般網路架構中非常重要的觀念——代理伺服器(Proxy)。代理伺服器位於客戶端與伺服器之間,負責處理轉發、保護和過濾等功能。根據其位置與功能的不同,代理伺服器還可以分為多種類型,而常見的代理伺服器包含Squid、Nginx、HAProxy等。接下來,讓我們深入了解這些類型及其用途吧!
功能
代理伺服器通常包含以下幾個主要功能:
- 請求轉發:接收並轉發客戶端的請求至伺服器端。
- 響應回傳:將伺服器端的響應回傳給客戶端。
- 隱私保護:通過代理伺服器隱藏客戶端的真實IP地址,增強用戶隱私。
- 內容過濾:根據設定過濾不當內容,限制訪問某些網站。
- 性能優化:利用緩存技術減少重複請求,提高網路速度和效能。
- 訪問控制:管理哪些用戶或設備可以訪問特定資源,以加強安全性。
- 負載平衡:根據設定分散伺服器的負載,提升整體系統的效能和穩定性。
- 日誌記錄與監控:記錄經過代理伺服器的各種活動,協助進行問題分析和流量監控。
簡而言之,代理伺服器就像一層保護屏障,讓客戶端與伺服器端不直接接觸,從而提高安全性與隱私保護。
類型
- 正向代理(Forward Proxy):客戶端設定的代理伺服器,讓伺服器端難以追蹤使用者。
- 反向代理(Reverse Proxy):伺服器端設定的代理伺服器,讓客戶端難以追蹤伺服器。也會用於負載均衡。
- 透明代理(Transparent Proxy):通常用於內容過濾和流量監控。
- 高匿名代理(Elite Proxy):高度隱私保護的代理,能完全隱藏客戶端的 IP 地址。
- VPN(虛擬私人網絡):不太算是傳統的代理,但 VPN 也會充當中間層,通過加密通道保護用戶的數據隱私,並隱藏真實 IP 地址。
Web 伺服器
Web 伺服器與代理伺服器之間算是互補的關係。簡單來說,Web 伺服器主要用來儲存、處理和傳送網站內容,因此當客戶端發出請求時,Web 伺服器會根據請求提供相應的資料;相比之下,代理伺服器並不儲存任何資料,僅作為客戶端與伺服器之間的中間角色。
常用的 Web 伺服器包括 Apache HTTP Server、Nginx [註1]、IIS 等。這些伺服器各具特色,能夠滿足不同的需求和場景。
相關小知識
- Apache 日誌:一般所說的 access log 通常是指 Apache 伺服器的訪問日誌,這些日誌記錄了所有進入的請求,包括請求的時間、方法、URL、響應狀態碼以及用戶代理等資訊,很適合用來監控伺服器性能和使用者行為。
- 翻牆行為:我們所謂的「翻牆」實際上是一種隱藏 IP 地址的行為,通常是借助代理伺服器的「請求轉發」功能來達成的。
- API 重試機制:在發出 API 請求時,我們通常會設定重試次數(通常為3次),以便在未收到回應時再次嘗試。對於發出 API 請求的一方來說,即使過程中嘗試了兩次,最終的日誌紀錄仍然只會顯示一次請求。相比之下,對於接收 API 請求的一方(包括中間的代理伺服器),每次重試都會產生一筆獨立的日誌紀錄,因此同樣的 API 請求可能會記錄多次。
[註1] Nginx 是一個高性能的 Web 伺服器和反向代理伺服器,能夠同時擔任兩者的角色,廣泛應用於處理高流量的網站。
參考資料:
- https://zh.wikipedia.org/zh-tw/代理服务器
- https://www.jyt0532.com/2019/11/18/proxy-reverse-proxy/