logo
Foundations

Proxy vs Reverse Proxy

Forward Proxy 与 Reverse Proxy 的区别与用法

ProxyReverse Proxy 都是夹在 client 与 server 之间的中间层,但它们服务的对象相反:

  • Forward Proxy:代表 client
  • Reverse Proxy:代表 server

proxy-vs-reverse-proxy-visual

1) What is a Proxy (Forward Proxy)

Proxy server 会拦截 client 请求,代替 client 向目标 server 发起请求,并把 response 返回给 client。

proxy-forward-flow

工作流程

  1. client 发起请求
  2. proxy 检查请求(允许/拒绝/缓存命中)
  3. proxy 转发到目标 server
  4. 目标 server 只看到 proxy 的 IP
  5. 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 可以让请求“看起来”来自目标国家。

proxy-geo-bypass

Example:你在 India,但想看 US Netflix library。把 proxy 放在 US,Netflix 看到的是 US IP。

2) Caching + TTL

proxy 把常用资源缓存到本地,后续请求直接命中 cache,减少 upstream latency。

proxy-cache-ttl

为避免 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。

reverse-proxy-flow

工作流程

  1. client 发起请求
  2. reverse proxy 拦截请求
  3. 根据规则(load balancing / health check)转发到 backend
  4. 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 ProxyReverse Proxy
代表谁ClientServer
目标隐藏 client、访问控制隐藏 server、分流保护
位置Client 侧Server 侧
常见场景隐私、内容访问控制load balancing、security、cache
常见产品Squid, PrivoxyNginx, HAProxy, Cloudflare

4) 选择建议

  • 你要保护/控制 client → 用 Proxy
  • 你要保护/扩展 server → 用 Reverse Proxy

相关练习题

Proxy vs Reverse Proxy

暂无相关练习题