什么是代理和反向代理?

Posted 程序员之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是代理和反向代理?相关的知识,希望对你有一定的参考价值。

感谢wangxiaoming投稿,原文链接https://www.jianshu.com/p/27a02da220b3


引文

相信大家对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 服务器制定的规则。

私有和公共代理

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

  • 公共代理
    大多数代理都是公共的共享代理。集中式代理的成本效率更高,更容易管理。某些代理应用,比如高速缓存代理服务器,会利用用户间共同的请求,这样的话,汇入同一个代理服务器的用户越多,它就越有用。

  • 私有代理
    专用的私有代理并不常见,但它们确实存在,尤其是直接运行在客户端计算机上的时候。有些浏览器辅助产品,以及一些 ISP 服务,会在用户的 PC 上直接运行一些小型的代理,以便扩展浏览器特性,提高性能,或为免费 ISP 服务提供主机广告。

代理与网关的区别

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

什么是代理和反向代理?

代理与网关的区别 1-2

代理的不同用途

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

  • 儿童过滤
    小学在为教育站点提供无阻碍访问的同时,可以利用过滤器代理来阻止学生访问成人内容。如图 1-3 所示,代理应该允许学生无限制地访问教育性内容,但对不适合儿童的站点要强行禁止访问。现在的家庭路由器也基本都带有这个功能了。

什么是代理和反向代理?

儿童安全的因特网过滤器 1-3

  • 文档访问控制
    可以用代理服务器在大量 Web 服务器和 Web 资源之间实现统一的访问控制策略,创建审核跟踪机制。这在大型企业环境或其他分布式机构中是很有用的。
    在集中式代理服务器上可以对所有访问控制功能进行配置,而无需在众多由不同组织管理、不同厂商制造、使用不同模式的 Web 服务器上进行经常性的访问控制升级。

什么是代理和反向代理?

集中式文档访问控制 1-4

  • 安全防火墙
    网络安全工程师通常会使用代理服务器来提高安全性。代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入或流出一个组织。还可以提供用来消除病毒的 Web 和 E-mail 代理使用的那种挂钩程序,以便对流量进行详细的检查(参见图 1-5)。

什么是代理和反向代理?

安全防火墙 1-5

  • Web 缓存
    代理缓存维护了常用文档的本地副本,并将它们按需提供,以减少缓慢且昂贵的因特网通信。在图 1-6 中,客户端 1 和客户端 2 会去访问附近 Web 缓存上的对象 A,而客户端 3 和客户端 4 访问的则是原始服务器上的文档。

什么是代理和反向代理?

Web 缓存 1-6

  • 反向代理
    代理可以假扮 Web 服务器。这些被称为替代物(surrogate)或反向代理(reverse proxy)的代理接收发给 Web 服务器的真实请求,但与 Web 服务器不同的是,它们可以发起与其他服务器的通信,以便按需定位所请求的内容。可以用这些反向代理来提高访问慢速 Web 服务器上公共内容时的性能。在这种配置中,通常将这些反向代理称为服务器加速器(server accelerator)(参见图 1-7)。还可以将替代物与内容路由功能配合使用,以创建按需复制内容的分布式网络。

什么是代理和反向代理?

反向代理 1-7

  • 内容路由
    代理服务器可以作为“内容路由器”使用,根据因特网流量状况以及内容类型将请求导向特定的 Web 服务器。内容路由器也可以用来实现各种服务级的请求。比如,如果用户或内容提供者付费要求提供更高的性能,内容路由器可以将请求转发到附近的复制缓存(参见图 1-8),或者如果用户申请了过滤服务,还可以通过过滤代理来转发 HTTP 请求。可以用自适应内容路由代理来构建很多有趣的服务。

什么是代理和反向代理?

内容路由器 1-8

  • 转码器
    代理服务器在将内容发送给客户端之前,可以修改内容的主体格式。在这些数据表示法之间进行的透明转换被称为转码(transcoding)。转码代理可以在传输 GIF 图片时,将其转换成 JPEG 图片,以减小尺寸。也可以对图片进行压缩,或降低颜色的色彩饱和度以便在电视上观看。同样,可以对文本文件进行压缩,并为能够使用因特网的呼机和智能手机生成小型的文本摘要 Web 页面。代理甚至可以在传输文档的过程中将其转换成外语。图 1-9 显示了一个转码代理,这个代理可以将英语文本转换成西班牙语文本,将 html 页面重新格式化为较简单的文本,以便显示在手机的小屏幕上。

内容转码器 1-9

   

文末福利




更多干货,扫码关注

以上是关于什么是代理和反向代理?的主要内容,如果未能解决你的问题,请参考以下文章

nginx--❤️图解及代码实现正向代理反向代理及负载均衡(非常实用,建议收藏❤️)

正向代理和反向代理是什么以及区别

正向代理和反向代理是什么以及区别

搞懂什么是正向代理和反向代理

正向代理和反向代理

谁能解释一下nginx反向代理是啥意思?