本篇参考文档:


2.https://www.bookstack.cn/read/nginx-official-doc/23.md

一,nginx的功能

1.反向代理

能提供性能稳定配置灵活的转发功能。而且根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

2、负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

上3个图,理解这三种负载均衡算法的实现

nginx转发时间 nginx转发机制_服务器

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。 

nginx转发时间 nginx转发机制_nginx转发时间_02

有一个问题,客户端的iphash过后是怎样来选择server的?

简单的说就是,把server的标识符(有可能是server ip,也有可能是server id)然后按一些算法,均匀的分布在一个hash环上,每次客户端来请求的时候,客户端ip(也可以是其他值)算出一个hash值,在hash环上面查找离这个hash最近的server。对应的请求就在这台后端服务器啦。

详细的说,那就是下面这段话啦,参考:https://www.bookstack.cn/read/nginx-official-doc/23.md

nginx转发时间 nginx转发机制_nginx转发时间_03

 

3、web缓存

Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。