什么是反向代理?
原创文章,未经允许,请勿转载
最近有人让我讲解反向代理,简单解释一下
- 正向代理
客户端把访问请求传给代理nginx
,让nginx
代为执行访问请求,然后把请求结果还给客户端,这个过程中,nginx根据来源请求,再解析其中的域名,与远端服务器交互
graph BT
客户端-->nginx
nginx-->baidu
nginx-->google
nginx-->facebook
正向代理的作用:解决客户端不能直接访问远端服务器,而代理端所在机器可以访问远端服务器的情况
- 反向代理
客户端把请求发给nginx
,nginx
再把请求发给后方的服务器,得到结果再还给客户端,这个过程中,后方服务器是固定配置在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
这种反向代理的方式,还有lvs
、anycast
等技术来实现负载均衡
路由分发
graph BT
客户端A-->nginx
客户端B-->nginx
客户端C-->nginx
nginx--/api1-->文件存储服务
nginx--/api2-->文件读取服务
路由分发的作用是把庞大的系统分散给不同的子服务,各个子服务的程序都不相同,负担的功能也不一样
来源:悠游悠游,2019-06-12,原文地址:https://yymmss.com/p/reverse-proxy.html