Foundations
Proxy vs Reverse Proxy
Forward Proxy 与 Reverse Proxy 的区别与用法
Proxy 和 Reverse Proxy 都是夹在 client 与 server 之间的中间层,但它们服务的对象相反:
- Forward Proxy:代表 client
- Reverse Proxy:代表 server

1) What is a Proxy (Forward Proxy)
Proxy server 会拦截 client 请求,代替 client 向目标 server 发起请求,并把 response 返回给 client。

工作流程
- client 发起请求
- proxy 检查请求(允许/拒绝/缓存命中)
- proxy 转发到目标 server
- 目标 server 只看到 proxy 的 IP
- proxy 把结果返回给 client
Key benefits
- Privacy / Anonymity:隐藏真实 client IP
- Access control:公司可限制访问内容
- Security:过滤恶意站点
- Performance:cache 常用内容,降低 latency
常见 use cases
- 绕过 geo restrictions(例如访问海外内容)
- 组织内部的统一访问控制
- 企业缓存代理(提升带宽利用率)
Real-world examples
1) Bypass geo restrictions
很多 streaming service 会按地区分内容库,proxy 可以让请求“看起来”来自目标国家。

Example:你在 India,但想看 US Netflix library。把 proxy 放在 US,Netflix 看到的是 US IP。
2) Caching + TTL
proxy 把常用资源缓存到本地,后续请求直接命中 cache,减少 upstream latency。

为避免 stale data,proxy 会设置 TTL(Time-To-Live),到期自动失效再向 origin 拉取。
Proxy vs VPN
两者都能隐藏 IP,但 VPN 会加密全部流量,安全性更高;Proxy 只转发特定请求,不一定加密。
2) What is a Reverse Proxy
Reverse proxy 在 server 侧的入口,接收来自 client 的请求,并按规则转发到 backend servers。

工作流程
- client 发起请求
- reverse proxy 拦截请求
- 根据规则(load balancing / health check)转发到 backend
- backend 返回结果 → reverse proxy → client
Key benefits
- Security:隐藏 backend IP,减少直接攻击面
- Load Balancing:分流请求,提升稳定性
- Caching static assets:降低 backend 压力
- SSL termination:集中处理 TLS
- WAF:过滤恶意请求
常见 use cases
- Cloudflare / Nginx / HAProxy 作为 edge / ingress
- 高流量网站入口保护与加速
Real-world example: Cloudflare
Cloudflare 的 reverse proxy 会在 edge 做 WAF + DDoS protection,阻挡恶意流量,同时把 static assets cache 到全球 PoP,降低用户访问 latency。
Nginx reverse proxy config(简化版)
server {
listen 80;
location / {
proxy_pass http://backend_server_ip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Load balancing(多个 backend)
upstream backend_servers {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nginx 默认是 round robin,如果要改算法(比如 ip_hash / least_conn),就在 upstream block 设置。
3) Proxy vs Reverse Proxy(对比表)
| 维度 | Forward Proxy | Reverse Proxy |
|---|---|---|
| 代表谁 | Client | Server |
| 目标 | 隐藏 client、访问控制 | 隐藏 server、分流保护 |
| 位置 | Client 侧 | Server 侧 |
| 常见场景 | 隐私、内容访问控制 | load balancing、security、cache |
| 常见产品 | Squid, Privoxy | Nginx, HAProxy, Cloudflare |
4) 选择建议
- 你要保护/控制 client → 用 Proxy
- 你要保护/扩展 server → 用 Reverse Proxy