注意
由于个人能力还没达到完全理解并用自己语言描述,所以下面都是我看了网上不同的文章,
觉得好的就保存下来给大家分享的,当然不一定完全一样中间有我自己的理解。
最后:尽信书不如无书!!!
正向代理
比如我们要去访问谷歌网站,我们直接访问不通,那么我们就可以找一个代理服务器为我们服务,我们通过代理服务器请求到谷歌网站。对于谷歌而言他只知道有一个服务器访问了自己,并不知道你找了一个代理服务器访问自己。而这里的代理服务器就是正向代理服务器。
在举一个通俗的例子。你需要钱,C正好有钱,但是你C不直接借给你。你和B关系比较好,B可以找C借到钱。你和B沟通后,由B来找C借到钱后在给你。这个B就是代理服务器。
正向代理:后端的/目标服务器(比如谷歌服务器)只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。因为你的请求经过了代理服务器了,而代理服务器不会把你客户端的信息完完全全的给后面的目标服务器。
问题1:
知名的科学上网工具shadowsocks 扮演的是正向代理角色 还是 反向代理? ----答案在文末
反向代理
所谓反向代理正好与正向代理相反,代理服务器是为目标服务器 服务的,虽然整体的请求返回路线都是一样的都是Client到Proxy(代理)到Server。
比如 我们访问百度网站,百度的代理服务器对外的域名为 https://www.baidu.com 。具体内部的服务器节点我们不知道。我们通过访问百度的代理服务器后,代理服务器给我们转发请求到他们N多的服务器节点中的一个给我们进行搜索后将结果返回。
再举例:我们同样需要钱,但是我们又不知道谁有钱,所以我们找了一家网贷平台,你提交资料后,网贷平台直接将钱打给你。但是你不知道,也不用关注网贷平台的钱从哪里来。网贷平台内部他们可能从哪一个财主哪里融的钱。对你而言网贷平台和他们的金主是一起的。
同样通过上面我们例子可以看到,此时的代理服务器和后面的目标主机是一个系统的(百度公司、网贷平台)。他们是对外提供服务的,所以称为反向代理,代理的是后面你借钱的人/你要访问的目标服务器。
正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。
注意
我在学习了解的过程中会有一个不正确的想法,认为正向代理和反向代理在请求过程中是二选一,这是错误的。比如你请求谷歌的过程中,我们发请求到正向代理服务器,它又把请求转发到谷歌的服务器,而谷歌的服务器又做了反向代理进行分流,然后返回结果。
nginx既能做正向代理,也能做反向代理。
答案1:正向代理