【分享】两篇文章看懂正向代理反向代理【2】

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【分享】两篇文章看懂正向代理反向代理【2】

看本文前,可以先看第一篇入门版,简单易懂:http://www.jyguagua.com/?p=3386

1. 概念

正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。

反向代理正好相反。对于客户端来说,反向代理就好像目标服务器。并且客户端不需要进行任何设置。客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反向代理后面的服务,也因此不需要客户端做任何设置,只需要把反向代理服务器当成真正的服务器就好了。

2. 区别

正向代理需要你主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或者域名去获取访问内容并返回;而反向代理不需要你做任何设置,直接访问服务器真实ip或者域名,但是服务器内部会自动根据访问内容进行跳转及内容返回,你不知道它最终访问的是哪些机器。

正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。

从上面的描述也能看得出来正向代理和反向代理最关键的两点区别:

  • 是否指定目标服务器
  • 客户端是否要做设置
    下面用一张图来表示两者的差异:

proxy_reverseproxy

正向代理中,proxy和client同属一个LAN,对server透明; 反向代理中,proxy和server同属一个LAN,对client透明。 实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把前者那种代理方式叫做正向代理,后者叫做反向代理。

从用途上来区分:

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

从安全性来讲:

  • 正向代理:正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
  • 反向代理:对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器

3. 使用场景

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将 防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

3.1 正向代理

从上面的介绍也就可以猜出来正向代理的至少一个功能(俗称翻墙),也即:

用户A无法访问facebook,但是能访问服务器B,而服务器B可以访问facebook。于是用户A访问服务器B,通过服务器B去访问facebook,,服务器B收到请求后,去访问facebook,facebook把响应信息返回给服务器B,服务器B再把响应信息返回给A。这样,通过代理服务器B,就实现了翻墙。

3.2 反向代理

从上面的介绍也可以猜出来反向代理的至少一个功能(比如负载均衡),也即:

假设用户A访问 http://www.somesite.com/something.html,但www.somesite.com上并不存在something.html页面,于是接收用户请求的该服务器就偷偷从另外一台服务器上取回来,然后返回给用户,而用户并不知道something.html页面究竟位于哪台机器上。

反向代理的作用就比较多了,这里简单列举一下:

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

下面做两个简单介绍

保护和隐藏原始资源服务器

reverse_proxy_1

用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。

负载均衡

reverse_proxy_2

当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问资源服务器B的时候,让不同的代理服务器Z(x)去应答不同的用户,然后发送不同用户需要的资源。

3.3 透明代理

透明代理比较类似正向代理的功能,差别在于客户端根本不知道代理的存在,它改编你的request,并会传送真实IP(使用场景就是公司限制网络的访问)。

比如为了工作效率或者安全,A公司屏蔽了QQ软件的使用。A公司的员工接上了网络,但发现无法使用qq。这就是透明代理捣的鬼。公司在内网和外网的中间插入一个透明代理,这个代理会根据规则抓取请求内容,遇到qq的请求我就把这个请求给屏蔽掉,这样就完成了透明屏蔽。当然了,如果你明白原理,就可以自己搞个正向代理来绕过公司的屏蔽。

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【分享】两篇文章看懂正向代理反向代理【2】

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: