01
什么是Nginx
Nginx是一个性能的HTTP和反向代理web服务器,同时提供IMAP/POP3/SMTP服务。
02
两个核心能力
1.静态资源服务器
2.反向代理
Nginx与Apache比较
Apache: 一个进程处理一个请求;阻塞式
Nginx: 一个进程处理多个请求;非阻塞式;
Nginx优势
高并发
扩展性好
异步非阻塞的事件驱动模型
高可用性
下图介绍常见的三种应用场景
信号量管理Nginx的master和worker
Master进程
1.监控worker进程,接收CHLD信号
2.管理worker进程
3.接收信号,TERM,INT,QUIT等待当前用户请求结束后再平滑关闭,HUP配置文件修改,USR1重新打开日志文件
worker进程
接收信号:TERM,INT,QUIT,USR1,WINCH
命令行,本质上还是发送信号给Nginx
nginx -s
reload:HUP
reopen:USR1
stop:TERM
quit:QUIT
06
平滑重启什么意思
平滑重启指的是Nginx重新加载配置文件,或者给nginx升级的时候可以不用停止业务。
重载配置文件的流程
1.向master进程发送HUP信号(reload命令)
2.master进程检查配置语法是否正确(也可通过nginx -t来检查语法)
3.master进程打开监听端口
4.master进程使用新的配置文件启动新的worker子进程
5.master进程向老的worke子进程发送QUIT信号
6.老的worker进程关闭监听句柄,处理完当前连接后关闭进程
07
Nginx热部署
热部署指的是版本升级可以不停止业务
1.将旧的nginx文件替换成新的nginx文件
2.向master进程发送USR2信号
3.master进程修改pid文件,加后缀.oldbin。nginx.pid.oldbin中记录老的pid
4.master进程用新nginx文件启动新master进程。此时新老nginx并存,同时处理用户请求。
5.向旧的master进程发送WINCH信号,旧的worker子进程退出。
发送WINCH信号,旧的master下的子进程先退出。确保新的请求都是使用新的master下的子进程
6.回滚情况:向旧master发送HUP,向新的master发送QUIT型号