Nginx

Nginx 学习

Nginx 是一个异步框架的web服务器,也可以用作反向代理,负载平衡器和HTTP缓存。

用网上大佬的总结就是:

  • nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;
  • 同时也是一个IMAP、POP3、SMTP代理服务器;
  • nginx可以作为一个HTTP服务器进行网站的发布处理,
  • 另外nginx可以作为反向代理进行负载均衡的实现。

什么是反向代理

首先说一下什么是代理吧,简单来说比如A到AJ专卖店买一双AJ1,这个专卖店就是代理,而目标角色就是用户,梯子也是这样的。

那么反向代理呢就是,比如现在的淘宝,每到双十一访问人数必爆表,那么单个服务器肯定是不行的,那么这个时候就有了分布式部署,通过部署多台服务器来解决访问人数限制的问题,直接使用Nginx进行反向代理实现,而且同时还隐藏了服务器的信息,因为是哪台服务器来处理客户端的请求是不明确的。

Nginx如何实现负载均衡

什么是负载量&均衡

上面所说的nginx反向代理服务器接收到的请求数量,就是负载量。
其实也就是表面意思,请求数量安装一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。
所以负载均衡就是将服务器接收到的请求按照规则分发的过程

负载均衡在实际操作中又分为了

  • 硬件负载均衡
  • 软件负载均衡

大多数都是使用的软件负载均衡,软件负载均衡是利用的现有的技术结合主机硬件实现的一种消息队列分发机制。

nginx的负载均衡调度算法

  • weight轮询(默认):接收到的请求组按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除队列,请求受理情况不会受到任何影响。这种方式下,可以给不同的后端服务器设置权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率也越大,这个也是主要根据后端服务器硬件配置调整的。
  • ip_hash:每个请求按照发起客户端的ip和hash结果进行匹配,这样的算法下一个固定的IP地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署换境session共享的问题。
  • fair:智能调整调度算法,动态根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短,处理效率高的服务器分配到的请求的概率高,反之…;结合了weightip_hash的优点,但是不是默认,要使用需要安装upstream_fair模块
  • url_hash:按照访问的url的hash结果分配,每个请求的url会指向后端固定的某个服务器,可以在Nginx作为静态服务器的情况下提高缓存效率。

动静分离模式

这是另一种实现负载均衡的架构
先看一个原始的企业架构
Alt text
这种架构就是:

  • 单节点
  • 无容灾
  • 负载能力低
  • 维护简单

为了改善这种架构,引入了这种动静分离的模式:
Alt text

这种架构使用Nginx来处理所有的静态资源请求(html,css,js),这样tomcat压力会小一些


   转载规则


《Nginx》 Gsuhy 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录