天天看点

【Nginx实现tomcat集群】正向代理与反向代理

说到tomcat集群的搭建,现在常见的都是nginx进行负载均衡,搭建tomcat集群,但要了解如何进行负载均衡首先有些基础的知识需要学习,我们来研究下 服务器的正向代理和反向代理

本文作用处图片引用自

http://blog.51cto.com/z00w00/1031287

1.正向代理

首先我们来看下面这张图

【Nginx实现tomcat集群】正向代理与反向代理
  • 关于正向代理的概念如下: 正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin

    server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代

    理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

是不是感觉很头大,这么长的概念,还很绕,其实举个简单例子

你就是A电脑,你现在想去国外的网站B看一些羞羞的东西,但是你没办法访问国外的网站,但是Z这台服务器可以访问国外的羞羞网站,这时候你先告诉Z这个代理服务器,你想看B的东西,Z便去拿你想看的B的内容,再将内容转交给你,这便是正向代理了!

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

以下几点都是引用别人的总结,因为觉得写得好,所以贴在这里给大家分享,如有侵权,可以联系我删除

1.访问本无法访问的服务器B

就如上面举的例子,下图是从别人的博客截图过来的,因为很直观形象

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

2.加速访问服务器B

这种说法目前不像以前那么流行了,主要是带宽流量的飞速发展。早期的正向代理中,很多人使用正向代理就是提速。还是如图假设用户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.客户端访问授权

【Nginx实现tomcat集群】正向代理与反向代理
上图防火墙作为网关,用来过滤外网对其的访问。假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许访问互联网(这个在代理服 务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器B,而用户B因为没有被代理服务器Z授权,所以访问服务器B时,数据包会被直接丢弃。

5.隐藏访问者的行踪

如下图 我们可以看出服务器B并不知道访问自己的实际是用户A,因为代理服务器Z代替用户A去直接与服务器B进行交互。如果代理服务器Z被用户A完全控制(或不完全控制),会惯以“肉鸡”术语称呼。
【Nginx实现tomcat集群】正向代理与反向代理

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

2.反向代理

我们先看下很学术的解释

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

    见下图

    【Nginx实现tomcat集群】正向代理与反向代理
    这里举个通俗的例子就是
  • 你现在是A

    你给10086客服打电话,但是10086这个号码背后有许多的客服小姐姐,你根本不知道哪个小姐姐会给你解答疑惑,这样的10086客服就是反向代理的服务器

我们注意到 正向代理和反向代理的区别在于

  • 正向代理 你需要告诉代理服务器z 你去B给我拿我要的东西,而反向代理,你不知道反向代理的服务器背后的是哪一位小姐姐给你服务!

反向代理服务器的作用如下

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

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

2.负载均衡

【Nginx实现tomcat集群】正向代理与反向代理

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

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

【Nginx实现tomcat集群】正向代理与反向代理

继续阅读