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解密)
正向代理常见用途:
-
公司内网代理
-
科学上网工具
-
内容过滤
负载均衡常见用途:
-
电商网站大促时
-
高流量应用
-
微服务架构