前言
本文是nginx原理篇,包含了nginx能用来做负载均衡,缓存,动静分离的原理:
nginx 的安装可以参考:
nginx的使用:
文章目录
一. nginx原理:
1.1 进程模型
nginx默认采用的是多进程 master-worker模式
, 以及IO多路复用模型。
nginx启动后,会有一个master和多个互相独立的worker进程,master进程主要用来管理worker进程,主要包含:
- 接收外界信号
- 向各个worker进程发送信号
- 监控woker进程的进程状态
- 当worker进程退出后(异常情况下),会自动重新启动新的worker进程
基本的网络事件,都是放在worker进程中进行处理,多个worker进行之间是相互独立的,它们同等的竞争来自客户端的请求。
worker进程的功能:
- 多个worker一起竞争来自客户端的请求
- 一个请求只能在一个worker中进行处理
- woker的进程的个数是可以设置的,一般我们会设置的与机器的cpu核心数一致。
在上图中可以看到: 我们的master接收外界信号,然后根据信号做不同的事情,如果想要控制nginx,只需要控制master即可。
master进程在接收到HUP信号后是怎么做的呢?
HUP 信号值得是重新加载配置,服务不会中断,类似于 nginx -s reload
;
整个过程是这样的:
- master进程在接到信号后,会先重新加载配置文件
- 启动新的worker进程,并向所有老的worker进程发送信号,终止老的work进程
- 在新的worker在启动后,就可以以新的配置文件来接收新的请求了。
- 而老的worker在收到来自master的信号后,就不再接收新的请求,并且在当前进程中的所有未处理完的请求处理完成后,退出。
如下图: