1.什么是Nginx
Nginx是一款轻量级的Web服务器,也是一款轻量级的反向代理服务器
2.Nginx最常做的事情
1.作为http反向代理服务器
现实生活中的代理
反向代理:客户要买某品牌的东西,去了某平牌的专卖店,此专卖为一个代理角色,这个品牌为被代理角色,这个客户为代理目标。
正向代理:
网络传输中的代理:
正向代理:某国网站设置防火墙官网不然访问其他国家的一些网站,这个时候有有人搞了一个代理服务器,可能设置国外,我们通过给这个代理服务器发送请求告诉他client要访问那个网站,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;
反向代理:一个大型网站,将业务进行了拆分把业务放在不同的机器上去,进行分布式部署。此时客户端来个请求,首先进入的是nginx,nginx按照不同的规则将请求转发到某一台服务器上进行处理。方向代理的主要特点是客户端明确请求,由nginx处理,nginx转发到哪一个服务器处理,客户端是不知道。方向代理隐藏了服务端处理的信息。
2.作为负载均衡服务器
定义:将服务器接收到的请求按照规则分发的过程,称为负载均衡。
.nginx 下几个负载均衡机制:
1.weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
2.ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
注意:请注意:这个方法本质还是轮询,而且由于客户端的ip可能是不断变化的,比如动态ip,代理,翻墙等等,因此ip_hash并不能完全保证同一个客户端总是由同一
个服务器来处理。因此不能测地结局session共享的问题。
第三方解决方案
1.fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。需安装upstream_fair模块。
2.url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,需要安装nginx的hash软件包。
3.特点
稳定、高性能、资源占用少、功能强悍、模块结构化、支持热部署。
领取专属 10元无门槛券
私享最新 技术干货