前两天公司进行项目架构培训,其中有一段讲到了Nginx,由于讲的比较少,故将掌握的知识点整理于此。如有bug,敬请指正。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。
1)静态HTTP服务器
Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。
2)反向代理服务器
百度百科有如下解释:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
3)负载均衡
在公司项目中Nginx常被用作负载均衡。我觉得负载均衡就是反向代理服务器的扩展。
必知必会:负载均衡策略。
a)轮询
最基本的配置方法,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器.
b)weight 权重
权重方式,在轮询策略的基础上指定轮询的几率。权重越高分配到需要处理的请求越多。
c)ip_hash
按照基于客户端IP的分配方式,确保相同的客户端的请求一直发送到相同的服务器,每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
d)least_conn 最少连接数
把请求转发给连接数较少的后端服务器。正好可以解决默认方式解决不了的请求占用的时间很长导致的后端负载较高。
e)fair(第三方)
按照服务器端的响应时间来分配请求,响应时间短的优先分配。
f)url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。
Nginx采用的是多进程工作方式。Nginx启动后,会运行一个master进程和多个worker进程。其中master是与用户交互的接口,同时管理worker进程来实现重启服务、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,通过“争抢”的方式来处理来自客户端的请求。
Nginx的进程模型如下图所示:
??!?!?1、