正向代理与反向代理

概念

正向代理(Forward Proxy)是一个位于客户端(Client)和目标服务器(Server)之间的代理服务器。为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标服务器,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。

反向代理(Reverse Proxy)与正向代理恰恰相反,目标服务器是以反向代理服务器来接受客户端的连接请求,使客户端认为其是目标服务器。客户端向反向代理服务器发送请求,然后自身将请求转发给内部网络上的目标服务器,并将从目标服务器上得到的结果返回给客户端。


区别

正向代理需要客户主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或域名去访问内容并返回。而反向代理不需要客户做任何设置,直接访问代理服务器真实ip或域名,代理服务器在内网中根据访问内容进行跳转和内容返回,客户无需知道最终访问的是哪些机器。

正向代理是代理客户端,真正服务的对象是客户端,使真实客户端对服务器不可见。而反向代理是代理服务器端,真正服务的对象是服务器,使真实服务器对客户端不可见。

  • img

    正向代理

  • img

    反向代理

  • img

    此图为综合例子,客户端可以通过正向代理绕过GFW访问某网站,其实客户端访问的是该网站的反向代理服务器。

从用途上区分:

  • 正向代理:正向代理为在防火墙内的局域网提供访问Internet的途径。还可以使用缓冲减少网络使用率。
  • 反向代理:反向代理将防火墙后面的服务器提供Internet用户访问。还可以完成诸如负载均衡,CDN等功能。

从安全上区分:

  • 正向代理:正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此服务器端需要采取安全措施来确保仅为经过授权的客户端提供服务。
  • 反向代理:反向代理隐藏局域网内的所有目标服务器,并对外界提供统一的接口,使得客户无需知道内部细节。从客户的角度说,他自身认为访问的就是原始服务器。

使用场景

正向代理
  • 无法访问服务器

客户端无法通过正常的渠道访问一些网站时,可以通过代理服务器接入其他网路节点去访问,然后将内容数据一并返回客户端。以上解释俗称“翻墙”。

img

  • 加速访问服务器

假设用户A到服务器B,需要经过很多路由器节点,并且其路由链路为低速带宽,可想而知,获取服务器B内容的时延将无法估计。但代理服务器C与服务器B的路由链路为高速带宽,继而用户A可以通过代理服务器C提高访问服务器B的速度。

img

  • 缓存内容(缓冲)

用户A第一次访问服务器B的内容时,代理服务器C可以将服务器B的内容暂时缓存起来,在用户A通过代理服务器C再次访问时,可以直接从代理服务器C中获取内容,降低服务器B的压力。

缓冲这一部分,其实不管正向代理和反向代理都会有应用,反向代理中有CDN等,范围比较广泛,界限也比较模糊。

img

反向代理
  • 保护和隐藏原始资源服务器
  • 负载均衡
  • 加密和SSL加速
  • 缓存静态内容
  • 压缩
  • 减速上传
  • 安全
  • 外网发布

下面做对两个功能进行简单的解释:

  • 保护和隐藏原始资源服务器由于防火墙的作用,客户端不能够直接与目标服务器进行通信。只能够通过暴露在外面的经过认证的代理服务器来访问目标服务器。img
  • 负载均衡反向代理服务器通过负载均衡的技术,将客户端的每次访问请求,均匀分配到集群中的不同服务器。img


参考资料:

[1] https://zhuanlan.zhihu.com/p/25423394

[2] http://z00w00.blog.51cto.com/515114/1031287