nginx学习笔记
nginx作用:
- 反向代理
- 负载均衡
- 动静分离(缓存)
nginx基本原理:
nginx采用master-worker形式进行工作,一个master进程可以有多个woker进程。
worker进程之间通过争抢的方式完成任务。
master-workers机制的好处:
可以使用
1
nginx -s reload
进行热部署。
每个进程是独立的进程,nginx同redis类似采用了IO多路复用(windows下没有IO多路复用机制)的机制,当一个worker进程退出后,其他的worker仍可以继续进行争抢,实现请求过程。这样可以保证nginx服务不会中断。
需要设置多少worker比较合适:
每个worker线程都可以把cpu性能发挥到极致,一般worker数量与cpu核心数量相等即可。
worker的连接数:
当仅访问缓存在nginx的静态资源,连接数为2。
需要访问tomcat(服务器)的资源,连接数为4。
当worker最大连接数为1024时,能够支持的最大并发数为(假设一共4个worker)
nginx分配服务器策略
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能够自动剔除。
weight
weight代表权重,默认值为1,权重越高被分配的客户端越多。
1
2
3
4upstream myserver {
server 192.168.237.131:8080 weight = 10;
server 192.168.237.131:8081 weight = 5;
}ip_hash
每个请求访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,例如:
1
2
3
4
5upstream myserver {
ip_hash
server 192.168.237.131:8080 ;
server 192.168.237.131:8081 ;
}fair
按后端服务器的响应时间进行分配,响应时间短优先分配
1
2
3
4
5upstream myserver {
server 192.168.237.131:8080 ;
server 192.168.237.131:8081 ;
fair
}
动静分离
动静分离实现方案:
- 把静态文件独立成单独的域名,放在独立的服务器上,也是当前主流的方案。
- 把动态文件和静态文件混合发布,通过nginx分开。
高可用
nginx集群保证如果nginx发生宕机,仍然有可用的nginx服务。
需要使用keepalived插件,创建一个虚拟ip分别绑定2个主、从nginx服务器。