什麼是反向代理?與正向代理的區別、目的與使用場景一覽

1. 先說明代理(Proxy)



代理伺服器(proxy server)是 位於客戶端與伺服器之間的「代理伺服器」。客戶端不直接向伺服器發送請求,而是將請求送給代理,代理再代表客戶端與伺服器通訊,最後將結果回傳給客戶端。

代理伺服器根據「站在哪一方(客戶端側 / 伺服器側)」的不同,名稱與角色也會不同。

  • 站在客戶端側,處理外部網路請求 → 正向代理(Forward Proxy)
  • 站在伺服器側,處理外部進來的請求 → 反向代理(Reverse Proxy)

2. 正向代理(Forward Proxy):客戶端側代理

正向代理通常是我們聽到「代理伺服器」時想到的概念。

2.1 運作結構

客戶端 → 正向代理 → 網際網路(多個伺服器)
  • 客戶端不直接連到網際網路,而是先發送請求給正向代理。
  • 正向代理代表客戶端向外部伺服器發送請求,收到回應後再回傳給客戶端。

2.2 主要用途

  • 隱藏客戶端 IP
  • 從外部伺服器的角度,只能看到代理的 IP,真正使用者的 IP 會被隱藏。
  • 存取控制 / 過濾
  • 公司或學校會用來封鎖特定網站(如 YouTube、SNS)等。
  • 快取
  • 將常見的外部網頁快取於代理,節省網路頻寬並提升速度。
  • 紀錄與監控
  • 記錄誰、何時、訪問了哪些網站。

2.3 使用範例

  • 公司/學校的 內部代理伺服器
  • 用於繞過國家封鎖的 網頁代理
  • 一些 VPN 服務(代理客戶端流量)

→ 總結:正向代理是 「客戶端外出時」 使用的代理。


3. 反向代理(Reverse Proxy):伺服器側代理



反向代理則相反,站在伺服器側的代理。客戶端實際上向反向代理發送請求,但外觀上看起來像是直接向「服務地址」發送。

3.1 運作結構

客戶端 → 網際網路 → 反向代理 → 內部伺服器(Web 伺服器、API 伺服器等)

流程分為幾個步驟: 1. 客戶端向 https://example.com 發送請求。 2. DNS 指向的不是實際 Web 伺服器,而是 反向代理。 3. 反向代理執行 * 負載平衡 * 認證/授權 * 快取 * 安全檢查(WAF)等 4. 反向代理將請求轉發至內部實際伺服器(A、B、C 中的一個)。 5. 內部伺服器回應後,再經由反向代理回傳給客戶端。

3.2 為什麼叫「Reverse」?

與正向代理相比,方向相反。

  • 正向代理:位置在客戶端前方,流向為「客戶端 → 正向代理 → 外部伺服器」。
  • 反向代理:位置在伺服器前方,流向為「客戶端(外部) → 反向代理 → 內部伺服器」。

因此,從「客戶端出發」與「伺服器接收」的角度來看,名稱「Reverse」是合適的。


4. 正向代理 vs 反向代理 一覽比較

分類 正向代理(Forward Proxy) 反向代理(Reverse Proxy)
位置 客戶端與網際網路之間 網際網路(客戶端)與內部伺服器之間
主要關注 客戶端保護 / 控制 伺服器保護 / 運營優化
主要目的 IP 隱藏、存取限制、過濾、快取 負載平衡、SSL 終止、安全、快取、URL 路由
安全觀點 內部保護客戶端外發流量 隱藏內部伺服器,外部只見代理
主要使用者 公司/學校 IT、一般使用者 服務運營者、後端/基礎設施工程師
代表範例 內部代理、網頁過濾代理、部分 VPN Nginx、HAProxy、AWS ALB、Cloudflare、Akamai 等

5. 反向代理的主要功能

以下列出反向代理常見的功能,說明其用途與實際應用。

5.1 負載平衡(Load Balancing)

問題:服務流量過大,單一 Web 伺服器無法承載;需要多台相同功能的伺服器。

反向代理的角色: * 接收進來的請求,將其分散到多台後端伺服器。 * 例如 Round Robin、Least Connections 等演算法。 * 若某台伺服器失效,可透過健康檢查停止將流量送往該伺服器。

使用範例: * Nginx 或 HAProxy 作為負載平衡器,後面接多台應用伺服器。 * AWS ALB(Application Load Balancer)等雲端負載平衡器。


5.2 SSL/TLS 終止(SSL Offloading)

問題:所有 Web 伺服器都要處理 HTTPS(SSL/TLS),CPU 負擔大;證書管理繁瑣。

反向代理的角色: * 在代理層完成 HTTPS 的終止(解密),將內部流量以 HTTP 或內部 TLS 傳遞。 * 證書只需在代理上管理,簡化維護。

使用範例: * https://example.com 的流量在 Nginx 反向代理終止,後端應用伺服器使用 http://app1:8080http://app2:8080 通訊。


5.3 安全(WAF、防火牆、伺服器隱藏)

問題:Web 應用易受 SQL Injection、XSS、DDoS 等攻擊;想隱藏內部結構。

反向代理的角色: * 以 WAF(Web Application Firewall) 過濾惡意請求。 * 只允許特定路徑或方法,其他則封鎖。 * 內部伺服器僅存在於私有網路,外部只能見到代理。


5.4 快取(Caching)

問題:靜態內容(圖片、CSS、JS)請求頻繁,直接到後端效率低。

反向代理的角色: * 在代理層快取靜態檔案,直接回應。 * 減輕後端負載、提升回應速度。 * CDN(Cloudflare、Akamai 等)本質上也是反向代理 + 快取。


5.5 URL 路由 / API Gateway 角色

問題:單一域名下運營多個服務(Web、API、管理頁面等),或微服務架構分散多個後端。

反向代理的角色: * 根據域名或路徑將請求路由到不同伺服器: * /api → API 伺服器 * /admin → 管理後端 * /static → 靜態檔案伺服器 * 作為 API Gateway,統一處理認證、授權、速率限制等。

範例

https://example.com/        → web-frontend 服務
https://example.com/api/    → api-gateway 服務
https://example.com/admin/  → admin-backend 服務

6. 何時使用哪種代理?

6.1 正向代理需要的情境

  • 公司需要監控/控制員工上網。
  • 學校、公共機構封鎖特定網站。
  • 內部使用者想集中管理出口流量。
  • 客戶端想隱藏 IP 與外部通訊。

關鍵字:客戶端保護、使用者網路管理/控制。

6.2 反向代理需要的情境

  • 網站流量增加,需要多台伺服器負載平衡。
  • 想集中管理 HTTPS 證書(SSL 終止)。
  • 想隱藏內部伺服器,並加強安全層。
  • 想利用靜態資源快取提升效能。
  • 需要在單一域名下路由多個後端服務。
  • 微服務架構下需要 API Gateway/Edge Proxy。

關鍵字:伺服器保護、服務擴展、運營便利、效能優化。


7. 總結

  • 代理伺服器是客戶端與伺服器之間的「代理」。
  • 正向代理(Forward Proxy):位於客戶端側,主要用於隱藏 IP、存取控制、過濾、快取。
  • 反向代理(Reverse Proxy):位於伺服器側,主要用於負載平衡、SSL 終止、安全(WAF)、快取、URL 路由與 API Gateway。
  • 在實際服務運營中,反向代理往往是伺服器前端基礎設施的核心組件,常見實作包括 Nginx、HAProxy、AWS ALB、Cloudflare、Akamai 等。

image