什么是反向代理?与正向代理的区别、目的、使用场景一览

1. 先从代理(Proxy)说起



代理服务器(proxy server)是 位于客户端与服务器之间的“代理服务器”。客户端不直接向服务器发请求,而是把请求发给代理,代理再与服务器通信并把结果返回给客户端。

此时,代理 站在哪一侧(客户端侧 / 服务器侧),名称和角色就会不同。

  • 站在客户端侧,代替外部网络发请求 → 正向代理(Forward Proxy)
  • 站在服务器侧,代替外部网络接收请求 → 反向代理(Reverse Proxy)

2. 正向代理(Forward Proxy):客户端侧代理

正向代理通常是我们听到“代理服务器”时想到的概念。

2.1 工作结构

客户端 → 正向代理 → 互联网(多个服务器)
  • 客户端 不直接访问互联网,而是向正向代理发送请求。
  • 正向代理代表客户端向外部服务器发请求,收到响应后再返回给客户端。

2.2 主要用途

  • 隐藏客户端 IP
  • 对外部服务器而言,只能看到代理的 IP,真实用户 IP 隐藏。
  • 访问控制 / 过滤
  • 公司或学校在阻止访问特定网站(如 YouTube、SNS)时使用。
  • 缓存
  • 将常访问的外部网页缓存到代理,节省网络流量并提升速度。
  • 日志与监控
  • 记录谁访问了哪些网站、访问量等。

2.3 使用示例

  • 公司/学校的 内部代理服务器
  • 用于绕过国家封锁的 网页代理
  • 一些 VPN 服务(代理客户端流量)

→ 简而言之,正向代理是 “客户端向外部发请求时” 使用的代理。


3. 反向代理(Reverse Proxy):服务器侧代理



反向代理则相反,是 站在服务器侧的代理。客户端实际上向反向代理发请求,但外观上看起来像是直接访问“服务地址”。

3.1 工作结构

客户端 → 互联网 → 反向代理 → 内部服务器(Web 服务器、API 服务器等)

流程分解:

  1. 客户端向 https://example.com 发送请求。
  2. DNS 指向的不是实际 Web 服务器,而是 反向代理
  3. 反向代理执行 * 负载均衡 * 身份验证/授权 * 缓存 * 安全检查(WAF)等
  4. 将请求转发给内部真实服务器(A、B、C 中的一个)。
  5. 内部服务器的响应再次通过反向代理返回给客户端。

3.2 为什么叫 “Reverse”

与正向代理相比,方向相反。

  • 正向代理:位置在 客户端前,流向为 客户端 → 正向代理 → 外部服务器
  • 反向代理:位置在 服务器前,流向为 客户端(外部) → 反向代理 → 内部服务器

因此,反向代理的名字来源于其“逆向”流向。


4. 正向代理 vs 反向代理一览

区分 正向代理(Forward Proxy) 反向代理(Reverse Proxy)
位置 客户端与互联网之间 互联网(客户端)与内部服务器之间
关注点 客户端保护 / 控制 服务器保护 / 运营优化
主要目的 IP 隐藏、访问限制、过滤、缓存 负载均衡、SSL 终止、安全、缓存、URL 路由
安全视角 保护客户端在外部发请求时的内部信息 隐藏内部服务器,过滤外部请求
主要用户 公司/学校 IT、普通用户 服务运营者、后端/基础设施工程师
代表例子 内部代理、网页过滤代理、部分 VPN Nginx、HAProxy、AWS ALB、Cloudflare、Akamai 等

5. 反向代理的主要功能

下面详细说明为什么要使用反向代理,以及它的具体功能。

5.1 负载均衡(Load Balancing)

问题

  • 服务流量大,单台 Web 服务器无法承载。
  • 需要多台功能相同的服务器。

反向代理的作用

  • 接收请求后 分发到多台服务器
  • 采用 Round Robin、Least Connections 等多种策略。
  • 通过健康检查,若某台服务器失效则不再分发流量。

使用示例

  • Nginx 或 HAProxy 作为 负载均衡器,后面挂多台应用服务器。
  • AWS ALB(Application Load Balancer)等云端负载均衡。

5.2 SSL/TLS 终止(SSL Offloading)

问题

  • 所有 Web 服务器都要处理 HTTPS,CPU 负担大。
  • 证书管理繁琐。

反向代理的作用

  • 在反向代理处 终止 HTTPS(解密),内部服务器可使用 HTTP 或内部 TLS。
  • 证书只需在代理上管理,简化运维。

使用示例

  • https://example.com 的流量在 Nginx 反向代理处终止,后端应用服务器通过 http://app1:8080http://app2:8080 通信。

5.3 安全(WAF、防火墙、服务器隐藏)

问题

  • Web 应用易受 SQL 注入、XSS、DDoS 等攻击。
  • 想隐藏内部结构(服务器 IP、端口)。

反向代理的作用

  • 通过 WAF 过滤恶意请求。
  • 只允许合法路径/方法通过,其他全部拦截。
  • 内部服务器仅在私有网络中存在,外部只能看到反向代理。

5.4 缓存(Caching)

问题

  • 静态内容(图片、CSS、JS)请求量大。
  • 每次都走后端服务器效率低。

反向代理的作用

  • 在代理层缓存静态文件,直接返回。
  • 降低后端负载,提升响应速度。
  • CDN(Cloudflare、Akamai 等)本质上也是反向代理 + 缓存。

5.5 URL 路由 / API Gateway 角色

问题

  • 单域名下运营多项服务(Web、API、管理后台)。
  • 微服务架构下后端拆分为多服务。

反向代理的作用

  • 按域名或路径路由 到不同服务器:
  • /api → API 服务器
  • /admin → 管理后台
  • /static → 静态文件服务器
  • 作为 API Gateway,统一处理认证/授权、限流等。

示例

https://example.com/        → web-frontend 服务
https://example.com/api/    → api-gateway 服务
https://example.com/admin/  → admin-backend 服务

6. 何时使用哪种代理

6.1 正向代理需要的场景

  • 公司需要监控/控制员工访问的网站。
  • 学校、公共机构需要屏蔽特定网站。
  • 内部用户想把 出口流量 集中到一台代理。
  • 客户端需要隐藏 IP 与外部通信。

→ 关键词:客户端保护、用户网络使用管理/控制。

6.2 反向代理需要的场景

  • Web 服务流量增长,需要 多台服务器负载均衡
  • 想在中心管理 HTTPS 证书(SSL 终止)。
  • 想隐藏内部服务器,添加安全层。
  • 想通过 静态资源缓存 提升性能。
  • 单域名下需要 多后端服务路由
  • 微服务架构下需要 API Gateway/Edge Proxy

→ 关键词:服务器保护、服务扩展性、运维便利、性能优化。


7. 小结

  • 代理服务器 是在客户端与服务器之间代替通信的“代理”。
  • 正向代理(Forward Proxy)
  • 位于客户端侧
  • 主要用于隐藏客户端 IP、访问控制、过滤、缓存
  • 反向代理(Reverse Proxy)
  • 位于服务器侧
  • 主要用于负载均衡、SSL 终止、安全(WAF)、缓存、URL 路由与 API Gateway
  • 在实际服务运营中,反向代理 是服务器前端基础设施的核心组成部分,常见实例有 Nginx、HAProxy、AWS ALB、Cloudflare、Akamai 等。

image