专栏首页技术小牛正向代理和反向代理的区别是什么?

正向代理和反向代理的区别是什么?

一文说清楚正向代理与反向代理的区别

今天,有位同事问我反向代理怎样理解,说某度上解释正向代理和反向代理的区别看后似懂非懂,于是有了此文。

首先,从字面上理解,代理的意思是代替办理,就是一方委托另一方办事,在计算机网络的世界里,代理通常是指客户端与服务端之间的中介。

计算机网络中的代理又分为正向代理和反向代理,正向代理很简单,就是客户端不直接访问服务端,而是通过一个中间人访问(中间人先代替客户端向服务端获取到数据,再将获取到的数据返回给客户端),很容易理解吧,那很多人会问,为什么客户端要“脱了裤子放屁”,不直接访问服务端呢?通常有两种原因:

1.因某些你懂的原因,客户端所在网络限制访问服务端了; 2.因某些特殊原因,服务端不允许某些来源的客户端访问。

举个粟子:A村子和B村子关系不好,所以A村设了限制,不允许A村民去B村小卖部买玉米,或者B村子小卖部不卖玉米给A村民。但A村民又想要B村子小卖部玉米,那怎么办呢?A村民可以委托C村子的人代替自己去B村子买东西,带回来后再交给自己,这就是正向代理。示意图如下:

图片来源:自己画的 这种结构的特点是:服务端不知道自己的真正客户是谁,它接触的客户是代理,但客户是知道真正提供服务的是谁(是B小卖部而非代理),正向代理是客户端无法直接访问(或想匿名访问)服务端的解决方案, 委托方是客户端!

而关于反向代理,很多人都觉得难以理解,因为正常的思维,既然正向代理是客户端向服务端获取数据的中介,那反向很自然就应该是服务端向客户端获取数据的中介了,然鹅事实并非如此,他们是有很大差别的,这是理解的难点。先来看一下下面这张图:

图片来源:自己画的 B村有很多村民都生产玉米(假设生产的玉米是无差别的),但分别单独对外售卖玉米很麻烦,因为客户不知道哪家有,也不清楚哪家的量有多少,所以他们全部委托给B村小卖部销售(注意: 委托方是服务端!),由小卖部统一对外服务。买玉米的客户不清楚玉米是哪家的,只管直接向小卖部购买就可以了,这就是反向代理。

这种结构的特点是:客户端不知道谁是真正的服务端(供应商),反向代理往往会根据一定的策略将请求转发到最合适的服务器处理,例如按服务器闲忙情况分配,咦,听起来是不是很像负载均衡的策略?没错,反向代理经常应用于实现负载均衡场景,Nginx等Web服务器支持反向代理功能并被广泛应用于实现负载均衡。

总的来说:所以虽然这两种代理方式名字相近,但目的及应用场景上天差地别:

  • 从功能来看: 正向代理是客户端不能(不便)直接访问服务端的解决方案 反向代理是多个服务端统一对外提供服务的解决方案
  • 从目标客户角度看 正向代理的委托方是客户端,代理向客户端(单次是1个)提供服务 反向代理的委托方是服务端,代理向多个(通常是多个,也可以单个)服务端提供服务
  • 从可见性的角度来看 正向代理对客户端可见,是客户端主动选择的结果(可选可不选,服务端只能被动选择),客户端可以选择直接访问(是否能访问得到是另一回事),也可以选择通过代理访问 反向代理对客户端不可见,是客户端被动选择的结果(是服务端主动选择的结果),意思是:客户端是不知道目前访问的服务是否使用了反向代理的

PS:有时候,这两种代理方式会在一次网络请求中并存,如下图所示:

*图片来源:自己画的*

大家各司其职,是完全没有冲突的

小伙伴看懂了吗?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是反向代理?正向代理和反向代理的区别是什么?

    首先,从字面上理解,代理的意思是代替办理,就是一方委托另一方办事,在计算机网络的世界里,代理通常是指客户端与服务端之间的中介。

    风柏杨4711
  • 正向代理与反向代理有什么区别

    Nginx作为时下最流行的HTTP服务器之一,同时它是一个反向代理服务器,提到反向代理服务器,有同学可能觉得这个概念很模糊,如果说到代理,他可能明白,但是再引出...

    java干货
  • 理解正向代理与反向代理的区别

    我是攻城师
  • 理解正向代理与反向代理的区别

    我们介绍了Nginx主要用来做反向代理,可能有些朋友并不很清楚什么是反向代理,本篇文章会介绍下反向代理和正向代理的不同之处: (一)正向代理 正向代理是一个位于...

    企鹅号小编
  • 架构01-什么是反向代理,什么又是正向代理?

    说起Nginx,我们都知道它可以用来做反向代理。那么,到底什么是反向代理,对应的正向代理又是什么呢?这篇文章就带大家来了解一下。其中反向代理也是系统架构的重要组...

    程序新视界
  • 正向、反向代理区别【转载】

    这种代理其实在生活中是比较常见的,比如访问谷歌网站技术,其用到的就是代理技术。//上次分享的谷歌访w助s就是这个

    勤奋的思远
  • 正向代理和反向代理

    小伍哥通过一个例子来解释一下什么叫代理。 比如有个A和B可以直接交流,现在A做大了不会接触B了,来了一个C,然后B交流,然后把交流的内容再回复给A,这个叫做代理...

    简单的程序员
  • nginx代理(正向代理和反向代理)

      是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理...

    码缘
  • 反向代理为什么叫“反向”代理?

    关注「前端向后」微信公众号,你将收获一系列「用心原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术

    ayqy贾杰

扫码关注云+社区

领取腾讯云代金券