(不背八股系列)正向代理 与 反向代理

94 阅读3分钟

不背八股系列 之 计算机网络

前言

有没有一种感觉,看了网上别人正向代理反向代理的文章觉得写的很好,但是过段时间仔细想想又感觉不是很清楚了,必须再看一遍。看完之后:“俺又行了!”。过段时间,啥意思啊?不行,我得再看看!这样子一直反复循环,始终没了解其背后的本质,下面我将用两张图来描述这两个概念,带你从配置的角度来看这两个概念,让你瞬间就能明白什么是正向代理,什么是反向代理

正向代理

话不多说,先上图!

image.png 从上图可以看到,当我们在浏览器或是在我们本地的Node服务器发送请求(其实本质都是一样的,都是通过特定的端口将请求发送出去)那当我们要访问 www.juejin.cn 时,正向代理服务器就会帮我们对这个url进行转发,注意一点:代理服务器拿到链接帮我们转发,相当于架设了一层拦截,我们的请求要发出去是要由代理服务器来发的。可以看到图上其实的代理服务器的配置的用的是$host变量,意思是我们发送的所有请求都会被代理。可以了,如果到这没有疑问,那么正向代理的概念就明白了。(不过nginx配置正向代理实际上还需要考虑流量加密等等细节,这里只是做概念性的理解就不深入了)

反向代理

老样子,先上图! image.png 看到这个图和上面正向代理的图很像,不同点有两个:一个是发送的请求,另一个是代理服务器的配置,可以看到这次我们发送的请求是直接往代理服务器上发的(正向代理实际上是想往目标源上发的,只不过被拦截由正向代理服务器发了),注意:直接往代理服务器上发(正向代理是拦截了我们的请求,相当于是被动的),这里的反向代理是主动的向代理服务器发送请求。还是访问 www.juejin.cn 这个例子,当我们掘金的开发者们不想要源服务器暴露时,他们会架设一个Nginx服务来让所有访问掘金官网的人都直接请求的是 www.juejin.cn 的Nginx服务器,由这个服务器来访问后端资源,所以Nginx服务上可以书写很多正则规则,例如访问图片.jpg格式到xxx:xx端口服务,访问其他资源就到yyy:yy端口服务,那么这就是反向代理。

总结一下

其实我们如果本地开了正向代理服务,也可能会是【正向代理+(目标源)反向代理->目标服务器】这个组合,因此这两个概念其实也只是概念,要真正理解这两个概念明白两点就行了:

  1. 正向代理是作为客户端可以控制的,反向代理客户端控制不了;
  2. 反向代理是作为开发者可以设置的,客户端是不可控制的;

注:由于本人是新手小白,文章内容可能有误区,如果哪里有误区,请大家在评论区指出,一起讨论,谢谢!