← 返回题目列表

正向代理和反向代理有什么区别?

高频 简单 第 1 / 27 题 更新于 2026/07/28
正向代理反向代理Nginx网络服务

简化版

区别在代理站在谁那边、替谁转发正向代理站在客户端这边,替客户端去访问服务器,服务器不知道真实客户端是谁(如科学上网、公司统一出口)。反向代理站在服务器这边,替服务器接收客户端请求再转发给后端,客户端不知道真实服务器是谁(如 Nginx,做负载均衡、缓存、SSL 卸载)。简单概括:正向代理隐藏客户端,反向代理隐藏服务器。

详细版

维度正向代理反向代理
代理位置客户端一侧服务器一侧
代理谁客户端发请求服务器收请求
谁知情客户端主动配置、知道有代理客户端无感,以为直接访问服务器
隐藏谁隐藏客户端(服务器看不到真实客户端)隐藏服务器(客户端看不到真实后端)
典型用途科学上网、公司统一出口、访问控制、缓存负载均衡、缓存、SSL 卸载、安全防护、动静分离
代表各类代理软件、公司代理服务器Nginx、HAProxy、CDN
正向代理:  客户端 → [正向代理] → 服务器      (代理替客户端出面)
反向代理:  客户端 → [反向代理] → 后端服务器   (代理替服务器出面)

完整版教学

一、核心区别:代理替谁「出面」

两种代理都是「中间转发」,区别在于它站在哪一边、替谁出面

  • 正向代理客户端出面。客户端主动把请求发给代理,代理再去访问目标服务器。服务器看到的是代理的 IP,不知道真实客户端是谁。所以正向代理隐藏了客户端
  • 反向代理服务器出面。客户端以为自己直接访问的就是服务器,其实访问的是反向代理,代理再把请求转发给背后真正的后端。客户端不知道背后有多少台服务器、具体是哪台。所以反向代理隐藏了服务器

判断口诀:看代理离谁近、替谁挡在前面——离客户端近、替客户端访问就是正向;离服务器近、替服务器接客就是反向。

二、正向代理:客户端的「代言人」

正向代理需要客户端主动配置(知道自己在用代理)。典型用途:

  • 突破访问限制:客户端连不上某服务器,通过能连上的代理中转(科学上网就是这个原理);
  • 统一出口 / 访问控制:公司让所有员工上网都走一台代理,便于审计、过滤、限制访问的网站;
  • 隐藏客户端身份:服务器只看到代理 IP,看不到真实客户端;
  • 缓存:代理缓存常访问的内容,多个客户端共享。

关键词:客户端主动用、代理替客户端访问、对服务器隐藏客户端。

三、反向代理:服务器集群的「门面」

反向代理对客户端透明(客户端无感,以为直连服务器)。它是现代 Web 架构的标配(Nginx 最典型),用途丰富:

  • 负载均衡:把请求分发到后端多台服务器(详见「负载均衡方式」那道题);
  • 缓存:缓存后端响应,减轻后端压力;
  • SSL 卸载:在反向代理层统一做 HTTPS 加解密,后端服务用 HTTP,省后端算力;
  • 安全防护:隐藏后端真实 IP、拦截恶意请求、限流;
  • 动静分离:静态资源代理直接返回,动态请求转发给后端应用。

关键词:客户端无感、代理替服务器接客、对客户端隐藏后端。

四、一个形象的类比

  • 正向代理代购:你(客户端)不方便直接买,委托代购(代理)替你去店里(服务器)买,店家只知道代购、不知道你是谁。
  • 反向代理前台/总机:你打电话给公司(服务器),先接通的是前台(反向代理),前台再转接到具体的员工(后端),你不知道也不关心背后是哪个员工接的。

五、常见误区

  • ❌ 把两者搞反——正向代理替客户端、隐藏客户端;反向代理替服务器、隐藏服务器。
  • ❌ 以为客户端能感知反向代理——反向代理对客户端透明,客户端以为直连服务器。
  • ❌ 以为正向代理不用配置——正向代理通常要客户端主动配置才生效。
  • ❌ 以为 Nginx 只能做反向代理——它主要做反向代理,但也能配成正向代理(少见)。

六、常见误区与追问

考点正确口径
正向代理代理客户端访问外部服务,服务端不一定知道真实客户端
反向代理代理服务端接收外部请求,客户端不一定知道真实后端
典型能力访问控制、缓存、负载均衡、TLS 终止、隐藏拓扑
forward proxy: client -> proxy -> internet
reverse proxy: client -> proxy -> backend pool
Nginx/LB often acts as reverse proxy

判断正反代理,别看软件名,看它站在谁的前面:替客户端出去是正向,替服务端接客是反向。

  • 误区:Nginx 一定是反向代理。 Nginx 常做反向代理,但代理类型取决于部署位置和服务对象。
  • 误区:正向代理只用于翻墙。 企业出口审计、缓存、访问控制、匿名访问也属于正向代理场景。
  • 误区:反向代理只是转发请求。 它还能做负载均衡、TLS 终止、限流、压缩、缓存和故障摘除。
  • 追问:反向代理为什么能隐藏后端? 客户端只连接代理地址,真实后端 IP、端口和数量不直接暴露。
  • 追问:代理如何传递真实客户端 IP? 常用 X-Forwarded-ForForwarded 头,但后端必须只信任可信代理写入的值。
  • 追问:负载均衡和反向代理是什么关系? 负载均衡常由反向代理实现,但反向代理还包含缓存、路由、安全等更多能力。

七、加强记忆

正向代理站在客户端一侧、替客户端访问服务器、对服务器隐藏客户端(科学上网、公司统一出口,客户端要主动配置);反向代理站在服务器一侧、替服务器接收请求转发给后端、对客户端隐藏服务器(Nginx 做负载均衡/缓存/SSL 卸载,客户端无感)。核心区别:正向隐藏客户端、反向隐藏服务器——看代理替谁出面。