Controlling nginx,这篇文档主要讲如何细化控制nginx进程,并用配置更新、日志轮换、nginx更新二进制文件三个例子说明。
开始
前言
nginx 能够用进程命令控制,进程的ID位于logs/nginx.pid。
主进程支持以下命令
TERM, INT 快速关闭
QUIT 正常关闭
HUP 改变配置,关闭旧工作线程,开启新的(keeping up with a changed time zone这句没看懂)
USR1 重写log文件
USR2 升级二进制文件,/sbin/nginx
WINCH 关闭工作进程
工作进程支持以下命令
TERM,INT 同上
QUIT 同上
USR1 同上
WINCH 用于debug,但不知道怎么用
这里我
一、配置更新
用HUB命令,会使主进程重读conf配置文件,并试着使用新配置,成功,则重写log文件,并关闭(正常关闭)旧工作线程,开启新的,失败则回滚至旧配置,不开启新进程。
二、轮换日志
首先将日志改名,USR1发送后,主进程重新打开已经被打开的日志并分配存活的工作进程,主进程关闭所有文件后通知工作进程重重新打开文件,工作进程新建文件,关闭旧文件。
这个主、工作进程,反复打开关闭文件我太懂,日志是主进程管理的么?USR1之后分给工作进程处理了?
三、更新二进制文件
更新之前先备份,替换后执行USR2, 会出现新的主进程和工作进程,然后,对旧主的执行WINCH,则保留旧主,正常关闭旧工作进程,平滑过渡了请求,注意!此时旧主仍在监听sockets,如果需要重新启用它,只需做下面两个操作
对old master发送HUP消息,再QUIT掉new master
TERM关闭new master,old master会自动回来
如果不需要重新启用old master,且更新成功,只需要QUIT掉old master
如果重新启动了,关闭new master了
If the new master process exits then the old master process discards the .oldbin
suffix from the file name with the process ID.
这句我看不懂,抛弃带有pid的文件名以.oldbin结尾的文件是什么意思