当前位置: 移动技术网 > IT编程>软件设计>架构 > 代理概述

代理概述

2018年08月18日  | 移动技术网IT编程  | 我要评论

一、正向代理(forward proxy)

一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下: 正 向代理(forward)是一个位于客户端【用户a】和原始服务器(origin server)【服务器b】之间的服务器【代理服务器z】,为了从原始服务器取得内容,用户a向代理服务器z发送一个请求并指定目标(服务器b),然后代 理服务器z向服务器b转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理

如下图1.1

从上面的概念中,我们看出,文中所谓的
正向代理就是代理服务器替代访问方【用户a】去访问目标服务器【服务器b】

这就是正向代理的意义所在。而为什么要用代理服务器去代替访问方【用户a】去访问服务器b呢?这就要从代理服务器使用的意义说起

使用正向代理服务器作用主要有以下几点:

1、访问本无法访问的服务器b
如下图1.2

我们抛除复杂的网络路由情节来看图1.2,假设图中路由器从左到右命名为r1,r2 假设最初用户a要访问服务器b需要经过r1和r2路由器这样一个路由节点,如果路由器r1或者路由器r2发生故障,那么就无法访问服务器b了。但是如果用户 a让代理服务器z去代替自己访问服务器b,由于代理服务器z没有在路由器r1或r2节点中,而是通过其它的路由节点访问服务器b,那么用户a就可以得到服 务器b的数据了。现实中的例子就是“fq”。不过自从vpn技术被广泛应用外,“fq”不但使用了传统的正向代理技术,有的还使用了vpn技术。

2、加速访问服务器b

这种说法目前不像以前那么流行了,主要是带宽流量的飞速发展。早期的正向代理中,很多人使用正向代理就是提速。还是如图1.2 假设用户a到服务器b,经过r1路由器和r2路由器,而r1到r2路由器的链路是一个低带宽链路。而用户a到代理服务器z,从代理服务器z到服务器b都是高带宽链路。那么很显然就可以加速访问服务器b了。

3、cache作用

cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了cache(缓存)技术。还如上图所示,如果在用户a访问服务器b某数据j之前,已经有人通过代理服务器z访问过服务器b上得数据j,那么代理服务器z会把数据j保存一段时间,如果有人正好取该数据j,那么代理服务器z不再访问服务器b,而把缓存的数据j直接发给用户a。这一技术在cache中术语就叫cache命中。如果有更多的像用户a的用户来访问代理服务器z,那么这些用户都可以直接从代理服务器z中取得数据j,而不用千里迢迢的去服务器b下载数据了。

4、客户端访问授权

这方面的内容现今使用的还是比较多的,例如一些公司采用isa server做为正向代理服务器来授权用户是否有权限访问互联网,

下图1.3

图 1.3防火墙作为网关,用来过滤外网对其的访问。假设用户a和用户b都设置了代理服务器,用户a允许访问互联网,而用户b不允许访问互联网(这个在代理服 务器z上做限制)这样用户a因为授权,可以通过代理服务器访问到服务器b,而用户b因为没有被代理服务器z授权,所以访问服务器b时,数据包会被直接丢弃.

5、隐藏访问者的行踪

如下图1.4 我们可以看出服务器b并不知道访问自己的实际是用户a,因为代理服务器z代替用户a去直接与服务器b进行交互。如果代理服务器z被用户a完全控制(或不完全控制),会惯以“肉鸡”术语称呼。

我们总结一下 正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内 容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的ip地址,还有代理程序的端口。

二、反向代理(reverse proxy)

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。 使用反向代理服务器的作用如下:

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

如下图2.1


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

2、负载均衡

如下图2.2

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

当然反向代理服务器像正向代理服务器一样拥有cache的作用,它可以缓存原始资源服务器b的资源,而不是每次都要向原始资源服务器b请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户x来自同一个网络,那么用户x访问反向代理服务器x,就会得到很高质量的速度。这正是cdn技术的核心。如下图2.3

我们并不是讲解cdn,所以去掉了cdn最关键的核心技术智能dns。只是展示cdn技术实际上利用的正是反向代理原理这块。

反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

基本上,网上做正反向代理的程序很多,能做正向代理的软件大部分也可以做反向代理。开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器。另外ms isa也可以用来在windows平台下做正向代理。反向代理中最主要的实践就是web服务,近些年来最火的就是nginx了。网上有人说nginx不能做正向代理,其实是不对的。nginx也可以做正向代理,不过用的人比较少了。

三、透明代理

如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了 。

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的request fields(报文),并会传送真实ip。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。 透明代理实践的例子就是时下很多公司使用的行为管理软件。

如下图3.1

用户a和用户b并不知道行为管理设备充当透明代理行为,当用户a或用户b向服务器a或服务器b提交请求的时候,透明代理设备根据自身策略拦截并修改用户a或b的报文,并作为实际的请求方,向服务器a或b发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户a或b,如上图,如果透明代理设置不允许访问服务器b,那么用户a或者用户b就不会得到服务器b的数据。

nginx中的代理

反向代理

反向代理(reverse proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

负载均衡

负载均衡,英文名称为load balance,是指建立在现有网络结构之上,并提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量.

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网