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解密)

正向代理常見用途:

  • 公司內網代理
  • 內容過濾

負載均衡常見用途:

  • 電商網站大促時
  • 高流量應用
  • 微服務架構