不背八股系列 之 计算机网络
前言
有没有一种感觉,看了网上别人正向代理反向代理的文章觉得写的很好,但是过段时间仔细想想又感觉不是很清楚了,必须再看一遍。看完之后:“俺又行了!”。过段时间,啥意思啊?不行,我得再看看!这样子一直反复循环,始终没了解其背后的本质,下面我将用两张图来描述这两个概念,带你从配置的角度来看这两个概念,让你瞬间就能明白什么是正向代理,什么是反向代理
正向代理
话不多说,先上图!
从上图可以看到,当我们在
浏览器或是在我们本地的Node服务器发送请求(其实本质都是一样的,都是通过特定的端口将请求发送出去)那当我们要访问 www.juejin.cn 时,正向代理服务器就会帮我们对这个url进行转发,注意一点:代理服务器拿到链接帮我们转发,相当于架设了一层拦截,我们的请求要发出去是要由代理服务器来发的。可以看到图上其实的代理服务器的配置的用的是$host变量,意思是我们发送的所有请求都会被代理。可以了,如果到这没有疑问,那么正向代理的概念就明白了。(不过nginx配置正向代理实际上还需要考虑流量加密等等细节,这里只是做概念性的理解就不深入了)
反向代理
老样子,先上图!
看到这个图和上面正向代理的图很像,不同点有两个:一个是发送的请求,另一个是代理服务器的配置,可以看到这次我们发送的请求是直接往代理服务器上发的(正向代理实际上是想往目标源上发的,只不过被拦截由正向代理服务器发了),注意:直接往代理服务器上发(正向代理是拦截了我们的请求,相当于是被动的),这里的反向代理是主动的向代理服务器发送请求。还是访问 www.juejin.cn 这个例子,当我们掘金的开发者们不想要源服务器暴露时,他们会架设一个Nginx服务来让所有访问掘金官网的人都直接请求的是 www.juejin.cn 的Nginx服务器,由这个服务器来访问后端资源,所以Nginx服务上可以书写很多正则规则,例如访问图片
.jpg格式到xxx:xx端口服务,访问其他资源就到yyy:yy端口服务,那么这就是反向代理。
总结一下
其实我们如果本地开了正向代理服务,也可能会是【正向代理+(目标源)反向代理->目标服务器】这个组合,因此这两个概念其实也只是概念,要真正理解这两个概念明白两点就行了:
- 正向代理是作为客户端可以控制的,反向代理客户端控制不了;
- 反向代理是作为开发者可以设置的,客户端是不可控制的;
注:由于本人是新手小白,文章内容可能有误区,如果哪里有误区,请大家在评论区指出,一起讨论,谢谢!