正向代理与反向代理

62 阅读2分钟

在互联网中,代理的应用非常普遍。为了区分代理在一些方面的不同用途,有正向代理(Forward Proxy)反向代理(Reverse Proxy)的区别。因为没有严格的定义,对网络了解不深的人来说,这两个概念有时候很容易混淆,因为基本作用都是在网络通信间多做一层中转。如省略正向/反向前缀,只说代理,通常认为是说正向代理

区分正向代理与反向代理

一般情况下,正向代理是协助用户端访问外部服务(发送网络请求),反向代理是协助服务端接收网络请求并把请求转发到内部其他服务(集群),从这个角度来看反向代理往往会比正向代理复杂。

请求流向来区分会比较容易理解,如图所示

正向代理(Forward Proxy):用户(计算机)发出请求 -> 正向代理 -> 外部网络,请求流向外部网络(如互联网)。典型的如访问国外网站的VPN,系统设置代理服务地址及端口,以及Fiddler、charles、whistle等抓包工具

反向代理(Reverse Proxy):来自外部网络请求 -> 反向代理 -> 内部服务(集群),请求从网布网络(如互联网)流入。典型的如负载均衡服务、安全服务(如防火墙)等

有时候网络的结构负复杂,两个服务间相互访问,其代理服务即可为正向代理,又可为反向代理。但依然可以通过请求流向来区分正向代理和反向代理。

serverA 访问 serverB(请求从A流向B),proxyA为正向代理

serverB 访问 serverA(请求从B流向A),此时proxyA为反向代理。

各自用途

正向代理和反向代理都可以用来做性能相关的事情,以提高网络访问速度。除此之外,各自有些不同的用途。

正向代理

➢ 可以对用户请求做处理。比如常用的Fiddler、charles等抓包工具可以对用户请求做各种处理后由工具自带的正向代理服务发出。

➢ 隐藏用户端真实IP,外部获得的是代理服务的IP

反向代理

➢ 负载均衡代理服务

➢ 安全保障代理服务

➢ 隐藏内部服务集群实现及IP