正向代理和反向代理(一)

在上网的时候,经常会听到代理这个词,仿佛有了代理便所向无敌,今天来简单聊聊什么是正向代理,什么是反向代理?

先用两张图简单介绍下区别:

图1 正向代理

图2 反向代理

从图1和图2来分析下正向代理和反向代理的异同点:相同点:发现不管是正向代理还是反向代理,它们逻辑上都是布局在客户端和服务端中间的,用来转发客户端的请求(request)到服务端,同时也转发服务端的响应(response)到客户端。

不同点:唯一的区别就是这条竖虚线的位置,对于正向代理而言,正向代理服务器对于客户端是可见的,同时对于服务端是不可见的;而对于反向代理而言,反向代理服务器对于服务端是可见的,同时对于客户端是不可见的。

接下来通过使用场景来加深理解:

正向代理的使用场景:

当你想要浏览一个网站(google或者youtube),通常情况下,是无法直接访问的,所以这时候一般是通过设置一个代理(俗称:科学上网)来访问这个网站,这种方式就是正向代理,这个代理是由用户自己设置的,所以对用户是可见可感知的。反向代理的使用场景:

互联网上每天都有大量的网络攻击事件,攻击者攻击的手段也是层出不穷,可谓防不胜防,在面对这种情况,很多企业会选择把网站通过反向代理来进行隔离,暴露给用户访问的网址其实是反向代理服务器的网站,而不是真正的服务器网址,这样就能避免一些恶意攻击,此外反向代理也能起到比较好的负载均衡的作用,可以用来作为负载均衡器,对流量的分发进行有效控制。

以上主要是通过正向代理、反向代理的概念、使用场景来介绍下关于代理的一些概念。后面关于正/反向代理的篇章会去从实战角度手写一个最简单的反向代理来更深入体会代理的妙用。