Nginx核心要领二:Nginx进程模型

x33g5p2x  于2021-12-20 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(396)

上一篇中介绍了Nginx的安装,本篇将介绍Nginx的一些概念性内容和工作流程

Nginx进程模型

Nginx是多进程的,启动时会先启动一个 Master 进程,然后由 Master 进程启动 子Worker 工作进程,Master主要作配置读取,维护 Worker 进程启动-销毁等,Worker进程对请求进行处理,Worker进程之间通过共享内存进行通信,启动Nginx时,默认设置Worker进程数为CPU的核心数。

  请求会先被服务器内核拿到,然后nginx主进程监听内核端口,因子进程可以继承父进程,因此子Worker进程可以拿到请求,然后进行处理,处理的算法有轮询、随机、ip-hash等等

我们熟悉的是 nginx 命令行,其实是在给 Master 进程发送信号,然后 Master 给子 Worker进程发送信号,Worker进程收到信号后执行相关操作,如启动、关闭等

以 nginx -s reload 命令为例,来说说nginx的处理流程

  • 1.向 master 进程发送 HUP 信号
  • 2.master进程先检测 nginx.conf 文件是否配置正确
  • 3.master进程打开新的监听端口
  • 4.master进程用新配置启动新的 Worker 进程
  • 5.master进程向老的 Worker进程发送 QUIT 信号
  • 6.老worker进程关闭监听句柄,处理完正在进行的请求后结束进程

再来熟悉下常用的 Nginx 命令:./sbin/nginx -s stop

  • 1.stop:立即关闭
  • 2.quit:正常关闭,处理完成请求后关闭
  • 3.reload:重新加载配置文件
  • 4.reopen:重新打开日志文件

除了通过Nginx命令行执行外,还可以通过linux的 kill 命令向nginx发送信号,pid是master进程号
kill -s QUIT pid

Nginx框架处理流程

nginx对请求处理分为11个阶段,在这11个阶段中有处理的先后顺序,如果第一个阶段的模块处理并返回后,后面的阶段将不会再处理,灰色阶段是nginx框架做的事,我们无法处理,如下:

  • 1.realip:可以拿到客户端真实IP
  • 2.limit_req(限制每秒连接数)、limit_conn(限制每秒并发连接数)
  • 3.access、auth_basic等是做验证的,可以让客户端输入用户和密码后才能请求
  • 4.content阶段是对请求发往上游服务后并进行响应
  • 5.log是记录请求日志

相关文章