浅谈正向代理和反向代理

147 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

正向代理

客户端寻找服务端,但是不能直接找到服务器,需要找一个中介者去牵线搭桥。

比如我们在国内在浏览器中使用Google查询bug的解决方案需要找一个VPN来帮助我们翻墙,通常这个VPN是放在中国大陆以外的某个地方,这个地方可以直接访问Google,它将我们发送的搜索请求转发给Google,然后Google查完之后将查询结果返回给代理服务器,代理服务器再返回给我们浏览器。

整个过程中,我们知道自己访问的目标是www.google.com/ ,代理是为我们办事。

反向代理

一家公司做自己的管理系统,根据不同业务划分了不同的微服务,不同的微服务有自己的域名,我们在前端访问接口的时候需要根据不同的域名获取

域名业务类型
www.haowan.customerCMS客户管理系统
www.haowan.bussiness公司商务管理系统
www.haowan.order订单管理系统

我们在浏览器中输入三个不同的域名,通过域名解析发现这三个域名对应着同一个IP,这个IP对应的服务器通过对不同域名的解析(有时候是同一个域名不同的端口)将请求转发到不同IP的服务器,然后对应的服务器再完成各自的工作,将结果返回给代理服务器,再由代理服务器返回给浏览器或者接口请求。

举一个例子帮助理解下:

一个大厦要竣工了,我想找一些艺人来办一场庆祝活动,假设这些艺人都签约了同一个经纪人霍汶希,和她签约的艺人有谢霆锋容祖儿Twins郑希怡泳儿。 现在我作为这个庆祝活动的负责人,找到霍汶希,说我要谢霆锋、容祖儿、Twins这几位艺人来参演,然后霍汶希就安排好他们几个,给我送到活动现场。

整个过程中有三个不同的角色

  • 我:客户端
  • 发送请求:要谢霆锋、容祖儿、Twins这几位艺人来参演
  • 霍汶希:代理服务器
  • 谢霆锋等人:目标服务器

在这次活动中霍汶希就做了一次反向代理,她代理的是目标服务器(谢霆锋等人)。

负载均衡

其实负载均衡也算得上是反向代理的另一种形态。它也是对服务器端进行了代理,当海量的客户端对同一个域名发送请求时,由于一台服务器的承受能力有限,这就需要有一个主管(代理服务器)来将用户发来的海量请求分发给不同的服务器进行CRUD。这样一群服务器就被代理管理了。

再举一个例子:

苹果公司的手机、电脑、手表等产品更新换代了,市场上的消费者们疯狂的购买苹果,这时候苹果公司就需要找富士康,富士康在全国有10家工厂,富士康会根据各个工厂的生产水品进行合理的分配,最终在合同限定的日期内交付给苹果,苹果再卖给消费者。

整个过程中有三个不同的角色:

  • 购买苹果产品的消费者 :客户端
  • 苹果的产品 :客户端请求
  • 苹果公司和富士康总公司 : 负载均衡代理服务器
  • 富士康的工厂 : 相同功能的服务器

这个例子中负载均衡服务器是苹果公司&富士康总公司,他们通过市场预测、商定合同等一系列操作做出共同决策,然后对各个工厂的生产做出合理的分配。

nginx实现

我们耳熟能详的,大名鼎鼎的Nginx就可以办反向代理、负载均衡这些事,具体的配置本文不谈,本文只谈对正向代理和反向代理的理解。

当然Nginx还可以做很多牛逼的事情,感兴趣的可以学一下,代码君,卷起来吧!