在現(xiàn)代網(wǎng)絡(luò)架構(gòu)中,“代理”早已不是黑客電影里的神秘詞匯,它早就融入了日常的互聯(lián)網(wǎng)生活。
從公司上網(wǎng)限制、加速訪問海外網(wǎng)站,到 CDN 全球加速、負(fù)載均衡,甚至是隱藏服務(wù)器真實(shí) IP,背后幾乎都繞不開兩個(gè)關(guān)鍵角色:正向代理(Forward Proxy) 和 反向代理(Reverse Proxy)。

很多人第一次聽說這兩個(gè)概念時(shí),常常一臉懵:
- ? 正向代理是給用戶用的,反向代理是給服務(wù)器用的?
其實(shí),這些問題的答案,和你理解的可能差得不遠(yuǎn),但細(xì)節(jié)上卻暗藏玄機(jī)。
今天,我們就用網(wǎng)絡(luò)工程師的視角,徹底拆解它們的原理、區(qū)別、應(yīng)用場景,順便分享幾個(gè)實(shí)際部署案例,讓你看完就能在項(xiàng)目里直接上手。
正向代理
正向代理是一種位于客戶端和目標(biāo)服務(wù)器之間的代理服務(wù)器,代替客戶端向目標(biāo)服務(wù)器發(fā)起請(qǐng)求,并將返回結(jié)果轉(zhuǎn)發(fā)給客戶端。
換句話說,目標(biāo)服務(wù)器看到的并不是你的真實(shí)客戶端 IP,而是代理服務(wù)器的 IP。

官方定義可能聽起來枯燥,我們換個(gè)形象的比喻:
你想去一個(gè)地方買東西,但不想讓商店知道是你本人,于是你讓朋友幫你去買,再把東西帶回來。這位朋友,就是正向代理。
工作原理圖:
客戶端 → 正向代理 → 目標(biāo)服務(wù)器
- 1. 客戶端將請(qǐng)求發(fā)送給正向代理(需要事先配置代理服務(wù)器的地址和端口)。
- 2. 正向代理替客戶端向目標(biāo)服務(wù)器發(fā)起請(qǐng)求。
- 3. 目標(biāo)服務(wù)器將響應(yīng)返回給代理服務(wù)器。
- 4. 代理服務(wù)器再將響應(yīng)轉(zhuǎn)發(fā)給客戶端。
常見用途
- ? 突破訪問限制:例如訪問被防火墻封鎖的網(wǎng)站。
- ? 隱藏客戶端真實(shí)身份:保護(hù)用戶隱私。
- ? 緩存和加速:代理可緩存常用資源,減少重復(fù)下載。
- ? 內(nèi)容過濾:企業(yè)內(nèi)部網(wǎng)絡(luò)可通過正向代理限制員工訪問特定網(wǎng)站。
際案例
- ? 科學(xué)上網(wǎng)工具(VPN、Shadowsocks、Squid 等)
- ? 公司內(nèi)網(wǎng) HTTP/HTTPS 代理(瀏覽器需要配置代理服務(wù)器地址)
反向代理
反向代理是位于客戶端和后端服務(wù)器之間的代理服務(wù)器,代替后端服務(wù)器接收客戶端請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)到真實(shí)的后端服務(wù)器,再將響應(yīng)返回給客戶端。

形象比喻:
你去一家餐廳點(diǎn)菜,看到的只是服務(wù)員(反向代理),服務(wù)員將訂單傳給后廚(真實(shí)服務(wù)器),做好后再由服務(wù)員送給你。你從頭到尾都不知道后廚在哪里、是什么樣子。
工作原理圖:
客戶端 → 反向代理 → 后端服務(wù)器(真實(shí)服務(wù)器)
- 1. 客戶端發(fā)起請(qǐng)求(無需知道真實(shí)服務(wù)器地址)。
- 2. 反向代理接收請(qǐng)求,根據(jù)規(guī)則選擇合適的后端服務(wù)器轉(zhuǎn)發(fā)。
- 3. 后端服務(wù)器處理請(qǐng)求并返回響應(yīng)給反向代理。
常見用途
- ? 隱藏真實(shí)服務(wù)器 IP:提高安全性,防止直接攻擊。
- ? 負(fù)載均衡:將請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器,提高性能和可用性。
- ? SSL 卸載:由反向代理負(fù)責(zé) HTTPS 加解密,減輕后端壓力。
- ? 緩存加速:在代理層緩存靜態(tài)資源,提高訪問速度。
- ? 應(yīng)用防火墻:過濾惡意請(qǐng)求,保護(hù)后端。
實(shí)際案例
- ? Nginx、Apache HTTP Server(反向代理模式)
- ? CDN(Cloudflare、Akamai 等)
- ? Kubernetes Ingress Controller
正向代理 vs 反向代理

一句話總結(jié):
正向代理是“替客戶端上網(wǎng)”,反向代理是“替服務(wù)器接客”。
實(shí)戰(zhàn)部署示例
正向代理(Squid)
假設(shè)公司需要限制員工訪問娛樂網(wǎng)站,同時(shí)緩存常用的業(yè)務(wù)資源以加快訪問速度,可以部署 Squid 正向代理。
# 安裝 Squid
yum install squid -y
# 編輯配置文件
vim /etc/squid/squid.conf
# 允許特定網(wǎng)段訪問代理
acl localnet src 192.168.0.0/24
http_access allow localnet
# 代理監(jiān)聽端口
http_port 3128
# 啟動(dòng)服務(wù)
systemctl enable squid
systemctl start squid
客戶端瀏覽器設(shè)置 HTTP 代理為 192.168.0.1:3128
即可生效。
反向代理(Nginx)
假設(shè)有三臺(tái) Web 應(yīng)用服務(wù)器(192.168.0.101、102、103),我們希望統(tǒng)一由 Nginx 入口代理,并實(shí)現(xiàn)負(fù)載均衡:
http {
upstream backend {
server192.168.0.101;
server192.168.0.102;
server192.168.0.103;
}
server {
listen80;
location / {
proxy_pass http://backend;
}
}
}
部署后,客戶端只需訪問 Nginx 代理服務(wù)器的 IP,Nginx 會(huì)自動(dòng)將請(qǐng)求分發(fā)到后端服務(wù)器。
在實(shí)際生產(chǎn)中,正向代理和反向代理并不是互斥的,甚至可以組合使用:
- ? 內(nèi)網(wǎng)用戶通過正向代理訪問互聯(lián)網(wǎng) → 互聯(lián)網(wǎng)流量經(jīng)反向代理到達(dá)服務(wù)器
- ? 例如:某公司海外業(yè)務(wù)使用正向代理訪問總部內(nèi)部系統(tǒng),總部外層用 Nginx 反向代理保護(hù)后端服務(wù)器。
該文章在 2025/8/12 10:17:14 編輯過