美文网首页QAHome技术汇技术干货
你真的清楚代理和反向代理的区别吗?

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

作者: wangxiaoming | 来源:发表于2017-08-29 10:21 被阅读2150次

引文

相信大家对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

相关文章

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

    引文 相信大家对web代理(proxy)都不陌生,工作和生活中都经常用到,特别是对翻墙的同学可能更加熟悉,亦或是玩...

  • Nginx常用功能以及相关配置

    Nginx 常用的功能: 1、Http正向代理、反向代理 正向代理和反向代理的区别:1、正向代理:类似我们想要访问...

  • 【Nginx】实现负载均衡的几种方式

    要理解负载均衡,必须先搞清楚正向代理和反向代理。 正向代理与反向代理【总结】 注: 正向代理,代理的是用户。反向代...

  • 小白学nginx之nginx的代理和负载均衡

    正向代理和反向代理的区别 正向代理,主要是内部上网反向代理,主要用于公司集群架构中区别在于形式上服务的"对象"不一...

  • nginx(四)配置反向代理一个集群

    1、正向代理和反向代理的区别 正向代理是代理客户端去请求(客户端请求通过该代理服务器转发请求)反向代理是代理服务端...

  • Nginx实现代理

    代理有正向代理和反向代理,这两种nginx都可以实现。 代理是什么?通俗讲,就是帮你处理一些事。 正反向代理区别:...

  • nginx代理

    nginx代理分为正向代理或反向代理。正向代理与反向代理的区别就是代理的对象不一样,正向代理代理的对象是客户端,反...

  • Nginx 正向代理与反向代理解析与实战

    Nginx 正向代理与反向代理 1. 正向代理与反向代理的区别 1.1 什么是代理服务器? 所谓代理服务器就是位于...

  • 代理和反向代理的区别

    正向代理 小A想请求小C,小A请求小B,小B拿到数据后返回给小A 反向代理 小A访问www.baidu.com/r...

  • nginx常用功能全揭秘

    转载:nginx常用功能全揭秘 正向代理正向代理的配置 反向代理正向代理的配置 透明代理区别和联系 负载均衡ngi...

网友评论

  • Mr张巍瀚:写的不错,一直在搞服务器这方面的,明白Nginx的原理了。
  • 大炮对着虫子:今天第一次接触nginx,弱弱的说,我的“nginx”还是复制过来的那种
  • i5possible:我觉得解释的并不清晰,没有抓住核心,冰冰的回复说的更明确一些
    wangxiaoming:@samsara_caa4 以采纳意见,多谢,多谢
    i5possible: @wangxiaoming 我觉得正向代理电话代理客户端,反向代理是代理服务端,先点明这一点,然后再举例说明会好一些
    wangxiaoming:提的建议很好,讲的概念太多了,没有举适合场景的例子,回头补充一个形象的例子,帮助大家理解。
  • dkvirus:第一遍看有点吃力,收藏了多看几遍
  • A大象叔叔宁明骅:看完这个你还是对配置反向代理一头雾水
    wangxiaoming:这不是讲解如何配置反向代理的呢,只是讲解概念,让大家清楚什么是反向代理,具体如何配置反向代理,还要参考你自己使用的是什么,比如用nignx,就去看看相关的书籍和官方wiki,应该可以解决你的疑惑
  • 风的落叶:在用Nginx,有空交流下哈:smile:
  • 1135e09dcb8a:刚开始了解,看的还是一知半解
    wangxiaoming:楼下也回复了,我写的概念太多,缺少例子,我补充一个吧,拿个常用的场景
    代理的使用:由于特殊原因,我们是无法直接访问www.google.com的,如果你想访问,就可以通过代理的方式,你的网络请求经过代理 d, d访问 www.google.com,然后把请求的结果在给你,然后你就能够访问google了。
    反向代理:当你通过代理d访问google服务时,会有反向代理服务器来f来接受你的请求,并把你的请求转发给真正提供google服务的服务器 g,g处理完请求后,将结果返回给f,f再返回给d,然后你才能看到结果。那你会问为什么不直接访问g呢,这是因为提供google服务的是一个很庞大的集群,也就是有很多g (g1,g2....gN),你的请求被哪一个g来处理,是由反向代理服务器来做的,这也是反向代理服务器最典型的应用场景,负载均衡,当然负载均衡的策略也有很多,比如随机分配,根据吞吐能力分配,根据相应时长分配等等,后期也可以写一篇文章,详细说下,当然你也可以搜索下,网上相关资料也很多。

本文标题:你真的清楚代理和反向代理的区别吗?

本文链接:https://www.haomeiwen.com/subject/leigdxtx.html