介绍

Nginx 运行态由一个主进程 (master process) 和多个工作进程 (worker processes) 组成。

主进程的工作是读取和评估配置并维护 worker 进程。

真正的请求处理在 worker 进程 上进行,nginx 雇佣基于事件模型 (event-based model) 和 OS-dependent 机制去高效地在 worker 进程之间分发请求。

Worker 进程的个数是定义在配置文件里。可以是固定数,也可以是由 CPU 核数来决定。

Nginx 和它的模块 (modules) 的工作方式取决于配置文件,默认 nginx 的配置文件名叫 nginx.conf

默认安装,配置文件在这几个位置之一:/usr/local/nginx/conf/etc/nginx/usr/local/etc/nginx

常用命令

应用 conf 文件改动

nginx -s reload

一旦主进程接收到信号 (signal) 去重载配置,它会去校验新配置的语法正确性并尝试去应用配置。

如果应用配置成功,主进程会启动新的 worker 进程并且发送消息给老的 worker 进程,请求关闭他们。否则,主进程回滚改变并以老的配置继续工作。

老的 worker 进程接收一个关闭命令,会停止接收新的连接并继续服务当前的请求,直到所有请求被处理完之后退出。

退出\启动\重载

Nginx 支持以下几个信号值:

  • stop :快速关闭 (fast shutdown) ;
  • quit :优雅关闭 (graceful shutdown) ;
  • reload :重新加载配置文件;
  • reopen :重开日志文件。

你可以通过下面的命令关闭 nginx:

nginx -s quit

发送给 nginx 的一个信号 (signal) 可能来至 Unix 工具,像 kill 套件。

如下面这样直接发送信号给一个给定的进程 ID (process ID) :

kill -s QUIT 1628

Nginx 主进程 ID 会被写入文件,默认 nginx.pid/usr/local/nginx/logs/var/run目录。

通过下面的命令,你可以获取所有 nginx 的进程:

ps -ax | grep nginx

参考资料:

> https://nginx.org/en/docs/beginners_guide.html#control

> https://www.lawinsider.com/dictionary/operating-system-dependent