網頁效能、快取與 CDN

反向代理(a reverse proxy)

想像一家大公司的前台接待員。訪客不會在大樓裡四處找對的人;他們全都先到同一個櫃台,由接待員把每個人引導到正確的部門、擋下不受歡迎的來訪者,並為整個組織呈現單一、體面的門面。反向代理就是網站的那位接待員:一台放在一或多台原始伺服器前方的伺服器,接收所有進來的用戶端請求、轉送給適當的後端,再把後端的回應傳回用戶端。

從用戶端的角度看,反向代理就是那個網站——用戶端連到它,從不會看到它背後真正的伺服器。那扇單一的前門,是「不改動後端就加上各種能力」的強大地點:負載平衡(把請求分散到許多伺服器)、快取(自己回應重複請求,讓後端維持空閒)、TLS 終結(在一處處理 HTTPS 加密)、壓縮、請求過濾、以及隱藏真正機器的數量與位址。當一個請求抵達,反向代理可能由自己的快取回應,或挑一台健康的後端轉送請求,並附上標頭告訴後端「真正的用戶端是誰」。

為什麼重要:反向代理是可擴展網路架構背後的主力,也是 CDN 邊緣伺服器的概念核心——兩者都站在某個原始伺服器前方,代表它服務用戶端。它與正向代理形成乾淨對照:正向代理代表用戶端、面向伺服器;反向代理代表伺服器、面向用戶端。一個值得說明的提醒:因為反向代理終結了用戶端連線,它(在解開 TLS 後)會看到明文的請求與回應內容,所以它是一個受信任、對安全敏感的元件——而且本身是一個必須做到高可用的單點。

shop.example.com 其實是六台後端伺服器,但用戶端永遠只連到一台反向代理。它把 HTTPS 解密一次、由自己提供已快取的商品圖片、並把每個動態請求轉送給最不忙的那台後端。

一扇公開的前門,隱藏並保護著許多真正的伺服器。

反向代理不是防火牆,儘管它有助於安全。它執行的是你設定的東西(路由、過濾、TLS);它無法阻止藏在「你選擇轉送給後端的請求」之內的攻擊。

又称
server-side proxygateway反向代理