我看到网上有很多关于正向代理和反向代理的解释,不过大多都是文字描述,很少有画图的。不妨通过下面的图片来了解一下。
正向代理
这个在生活中比较常见了,我们举个例子:最近某某地方需要修一段路,你很想接下这个工程。你知道需要去哪个地方才能接,可人家不认识你,不放心,要熟人介绍。这时你就需要通过中间人
来牵线,那我们就找到中间人
小刚来和工程方对接。同时,工程方并不需要知道你是谁,他们认识小刚,知道小刚很靠谱,那介绍的人也肯定靠谱,这个工程就 o 了
再比如,我们作为程序员,有些时候查资料避免不了 fq。我们不能直接访问目标服务器
,因为一些原因,它受限了。
所以,我们需要一个代理服务器(梯子)
。这个服务器可以访问目标服务器
,而我们又可以访问这个代理服务器
。那不就正如下图一样吗?
正向代理用途
突破访问限制
就像上图一样,通过代理服务器,可以突破 IP 访问限制,访问外网。
加速网络
如果你和代理服务器在一个局域网,那么代理服务器的访问速度要比你直接访问快,从而加速网络
反向代理
假如你是亿万富翁,你现在急需要用 1000 万,你去了经常去的一个银行取钱,可没有预约,这个银行没那么多钱。所以它要向其他行汇报,然后筹钱。不过这对于你来说是不可见的也无需关心的,我才不管你从哪里调钱过来,我只管拿钱就行了。
放在网络中就是,我们大家去 x 宝买东西,可是同时搜索商品的人太多了,那 x 宝一个服务器也撑不住啊。所以 x 宝又往上堆机器,将大流量分摊到各个机器上,防止服务器崩溃,流失用户。
以上的例子正如下图:
反向代理用途
负载均衡
根据入口服务器的流量,将客户端请求分发到不同的服务器上。
隐藏服务器的真实 IP,提高安全保障
除了上面的例子,还有一个特殊的反向代理服务器->API GateWay(网关)
。在大型应用中会将应用服务拆分成多个,比如一个商城的后台服务可以拆分为订单服务
,商品服务
,支付服务
等。这样,客户端调用就不是很方便,所以通过网关应用来统一访问微服务
并做权限处理、流量拦截等。客户端只需要访问网关暴露的 api 即可
总结
正向代理
,其实是代理服务器
代理了客户端
,去和目标服务器
交互反向代理
,代理服务器
代理的是目标服务器
,去和客户端
交互