今天我们一起学习一下反向代理
Nginx的反向代理分为http七层的反向代理和四层的反向代理(stream)。
在学习反向代理的过程中会引出两个概念:
1. 负载均衡
2. 缓存
一个请求的顺序是先到达Nginx->上游服务->返回到客户端。
我们先来看下负载均衡:

可以从图中看到不同客户端的请求会按照不同的策略,打到不同的应用服务器上。
这时候可能服务器2 宕机了,又扩容了一个服务器4。
这样就给这个应用服务集群提高了CAP中的A 可用性。包括了容灾,扩容。
而负载均衡是实现整个服务可用性的重要手段。
我们现在看一下可扩展性是怎样通过负载均衡来保证的。

有了反向代理后,我们又会引出另一个概念--缓存。
缓存也分为2类:
时间缓存:比如现在有一个用户访问了index.html,请求到达Nginx,Nginx没有这个内容,就会去应用服务器获取内容,然后Nginx会做2件事情。先把内容返回给客户端,然后把内容缓存在Nginx所在的服务器。这样等下次再请求这个内容的时候,Nginx发现这个内容已经缓存了,而且是在缓存有效期之内,它就不用去应用服务器,直接返回给客户端,这样就减少了整个请求的环节,而且Nginx的性能要比应用服务器的性能更好。
空间缓存:当一个请求去访问后端一些内容的时候,Nginx可以加快速度预取一些响应的内容放在Nginx上面,这个使用相对比较少。