什么是反向代理?与正向代理的区别、目的、使用场景一览
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 服务器等)
流程分解:
- 客户端向
https://example.com发送请求。 - DNS 指向的不是实际 Web 服务器,而是 反向代理。
- 反向代理执行 * 负载均衡 * 身份验证/授权 * 缓存 * 安全检查(WAF)等
- 将请求转发给内部真实服务器(A、B、C 中的一个)。
- 内部服务器的响应再次通过反向代理返回给客户端。
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:8080、http://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 等。

目前没有评论。