1. 🔄 反向代理
情景:
顧客想買手機,他走到購物中心前台問:"手機店在哪?"
前台説:"您稍等,我幫您聯繫",然後前台去後面的手機店取來手機交給顧客。
技術解釋:
- 顧客不知道後面有多少家手機店,也不知道具體是哪家為他服務
- 前台(Nginx)代表後面的店鋪(服務器)為顧客服務
- 客户不知道真正的服務提供者
# Nginx 配置示例
server {
listen 80;
server_name shopping-mall.com;
location /phone-shop/ {
# 將請求轉發給後端的手機店
proxy_pass http://real-phone-shop:8080;
}
location /clothing-shop/ {
# 將請求轉發給後端的服裝店
proxy_pass http://real-clothing-shop:8081;
}
}
特點: 隱藏真實服務器,保護後端,統一入口
2. 🎯 正向代理
情景:
顧客想訪問一個被限制的國外網站(比如某些外網),但他無法直接訪問。
於是他找了一個"代理服務"(比如VPN),讓代理幫他去訪問那個網站,然後把內容傳回來。
技術解釋:
- 顧客主動使用代理
- 網站不知道真正的訪問者是誰,只知道代理在訪問它
- 服務器不知道真正的客户端
# 正向代理配置(Nginx 也可以做,但較少用)
server {
listen 3128; # 代理端口
resolver 8.8.8.8;
location / {
# 允許客户端通過此服務器訪問外部網絡
proxy_pass http://$http_host$request_uri;
}
}
特點: 突破訪問限制,隱藏客户端身份
3. ⚖️ 負載均衡
情景:
購物中心有三家一模一樣的手機店(賣同樣商品)。
前台看到很多顧客都要買手機,於是:
- 把第一個顧客指引到1號店
- 把第二個顧客指引到2號店
- 把第三個顧客指引到3號店
- 把第四個顧客又指引到1號店...
技術解釋:
- 將大量請求分配到多個相同的服務器上
- 避免單個服務器過載
- 提高整體處理能力
# Nginx 負載均衡配置
upstream phone_shops {
# 定義三家手機店(後端服務器)
server 192.168.1.101:8080 weight=3; # 權重3,處理更多請求
server 192.168.1.102:8080 weight=2; # 權重2
server 192.168.1.103:8080 weight=1; # 權重1
}
server {
listen 80;
server_name shopping-mall.com;
location /phone-shop/ {
# 將請求負載均衡到三家店
proxy_pass http://phone_shops;
}
}
特點: 分攤壓力,提高可用性,擴展性
🎯 一句話總結
|
概念
|
誰被代理?
|
為誰服務?
|
一句話理解
|
|
反向代理 |
服務器
|
客户端
|
"幫服務器接客" - 客户找代理,代理找真服務器 |
|
正向代理 |
客户端
|
客户端
|
"幫客户跑腿" - 客户讓代理去訪問目標 |
|
負載均衡 |
多個服務器
|
系統整體
|
"客流分配員" - 把客户平均分給多個服務點 |
🔧 實際應用場景
反向代理常見用途:
- 網站入口網關
- API 網關
- SSL 終端(HTTPS解密)
正向代理常見用途:
- 公司內網代理
- 內容過濾
負載均衡常見用途:
- 電商網站大促時
- 高流量應用
- 微服務架構