Fork me on GitHub

什么是反向代理?

原创文章,未经允许,请勿转载

最近有人让我讲解反向代理,简单解释一下

  • 正向代理

客户端把访问请求传给代理nginx,让nginx代为执行访问请求,然后把请求结果还给客户端,这个过程中,nginx根据来源请求,再解析其中的域名,与远端服务器交互

graph BT 客户端-->nginx nginx-->baidu nginx-->google nginx-->facebook

正向代理的作用:解决客户端不能直接访问远端服务器,而代理端所在机器可以访问远端服务器的情况

  • 反向代理

客户端把请求发给nginxnginx再把请求发给后方的服务器,得到结果再还给客户端,这个过程中,后方服务器是固定配置在nginx里的

graph BT 客户端A-->nginx 客户端B-->nginx 客户端C-->nginx nginx-->文件存储服务

反向代理的作用:后端服务器不直接与客户端交互,而是通过nginx过滤后与客户端交互,可以做负载均衡,或者多个服务器路由分发,如:/api1 发到后端服务1,/api2 发到后端服务2

负载均衡

graph BT 客户端A-->nginx 客户端B-->nginx 客户端C-->nginx nginx-->文件存储服务1 nginx-->文件存储服务2 nginx-->文件存储服务3

负载均衡时,可以配置调度方案,比如iphash或者按轮询,按优先级等方式来分发请求,把请求分散给各个后端服务器

上面的文件存储服务1、2、3都是完全一样的程序,负担的功能一样,一般会把计算密集型的服务分散部署为集群,通过nginx集中调度,当然负载均衡不只有nginx这种反向代理的方式,还有lvsanycast等技术来实现负载均衡

路由分发

graph BT 客户端A-->nginx 客户端B-->nginx 客户端C-->nginx nginx--/api1-->文件存储服务 nginx--/api2-->文件读取服务

路由分发的作用是把庞大的系统分散给不同的子服务,各个子服务的程序都不相同,负担的功能也不一样

来源:悠游悠游,2019-06-12,原文地址:https://yymmss.com/p/reverse-proxy.html