QAHome技术汇技术干货

你真的清楚代理和反向代理的区别吗?

2017-08-29  本文已影响2150人  wangxiaoming

引文

相信大家对web代理(proxy)都不陌生,工作和生活中都经常用到,特别是对翻墙的同学可能更加熟悉,亦或是玩游戏的同学经常购买网游加速器也是代理的一种。当然你说我这些场景都没有,那你也有可能使用代理服务器,比如你用的各种高速浏览器基本都是走了代理服务器,才提高网速,甚至上一些国内不能上的网站。那反向代理是个啥鬼呢,其实用一句最简单的话解释,代理是代替客户端去访问服务器,反向代理是代替服务器接受客户端的请求。反向代理只是被代替的对象的改变,从客户端改为服务器。如果把代替客户端的代理称为正向代理,那么代替服务器的代理,就是我们称作的反向代理,这也是为什么称之为反向的原因。从下图能让大家有个直观的感受。其实代理和反向代理都可以统称为代理服务器,只是使用的场景和用途不同,起的方便区分用途的名字罢了。

代理服务器和反向代理服务器扮演的角色不同 1-1

举个例子

评论里大家都说太晦涩难懂,因此举个栗子,希望大家能够更好的理解。
代理的使用:由于google退出中国市场等特殊原因,我们是无法直接访问www.google.com的,如果你想访问,就可以通过代理的方式,你的网络请求经过代理 d, d访问 www.google.com,然后把请求的结果再返回给你,然后你就能够访问google了,是不是很神奇,代理就是它帮你访问你访问不了的服务,并把结果给你。
反向代理的使用:当你通过代理d访问google服务时,会有反向代理服务器来f来接受d的请求,并把d的请求转发给真正提供google服务的服务器 g,g处理完请求后,将结果返回给f,f再返回给d,然后你才能看到结果。那你会问为什么不直接访问g呢,这是因为提供google服务的是一个很庞大的集群,也就是有很多g(g1,g2....gN),你的请求被哪一个g来处理,是由反向代理服务器来做的,这也是反向代理服务器最典型的应用场景,负载均衡,当然负载均衡的策略也有很多,比如随机分配,根据吞吐能力分配,根据相应时长分配等等,后期也可以写一篇文章,详细说下,当然你也可以搜索下,网上相关资料也很多。

Web代理服务器是网络的中间实体

    Web 上的代理服务器是代表客户端完成事务处理的中间人。如果没有 Web 代理,HTTP 
客户端就要直接与 HTTP 服务器进行对话。有了 Web 代理,客户端就可以与代理进行对话,然
后由代理代表客户端与服务器进行交流。客户端仍然会完成对事务的处理,但它是通过代理服
务器提供的优质服务来实现的。
    HTTP 反向代理服务器既是 Web 服务器又是 Web 客户端。HTTP 客户端会向代理发送请
求报文,反向代理服务器必须像 Web 服务器一样,正确地处理请求和连接,然后返回响应。同
时,反向代理自身要向服务器发送请求,这样,其行为就必须像正确的 HTTP 客户端一样,要发
送请求并接收响应(参见图 1-1)。如果要创建自己的 HTTP 反向代理服务器,就要认真地遵
循为 HTTP 客户端和 HTTP 服务器制定的规则。

私有和公共代理

代理服务器可以是某个客户端专用的,也可以是很多客户端共享的。单个客户端专用的代理被称为私有代理。众多客户端共享的代理被称为公共代理。

代理与网关的区别

严格来说,代理连接的是两个或多个使用相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的端点。网关扮演的是“协议转换器”的角色,即使客户端和服务器使用的是不同的协议,客户端也可以通过它完成与服务器之间的事务处理。

代理与网关的区别 1-2

代理的不同用途

代理服务器可以实现各种时髦且有用的功能。它们可以改善安全性,提高性能,节省费用。代理服务器可以看到并接触到所有流过的 HTTP 流量,所以代理可以监视流量并对其进行修改,以实现很多有用的增值 Web 服务。这里给出了几种代理使用方法的示例。

儿童安全的因特网过滤器 1-3 集中式文档访问控制 1-4 安全防火墙 1-5 Web 缓存 1-6 反向代理 1-7 内容路由器 1-8 内容转码器 1-9
上一篇 下一篇

猜你喜欢

热点阅读