Controlling nginx,这篇文档主要讲如何细化控制nginx进程,并用配置更新、日志轮换、nginx更新二进制文件三个例子说明。nginx
开始
前言
nginx 可以用进程命令控制,进程的ID位于logs/nginx.pid。socket
主进程支持如下命令spa
TERM, INT 快速关闭线程
QUIT 正常关闭debug
HUP 改变配置,关闭旧工做线程,开启新的(keeping up with a changed time zone这句没看懂)日志
USR1 重写log文件code
USR2 升级二进制文件,/sbin/nginx进程
WINCH 关闭工做进程文档
工做进程支持如下命令it
TERM,INT 同上
QUIT 同上
USR1 同上
WINCH 用于debug,但不知道怎么用
这里我
1、配置更新
用HUB命令,会使主进程重读conf配置文件,并试着使用新配置,成功,则重写log文件,并关闭(正常关闭)旧工做线程,开启新的,失败则回滚至旧配置,不开启新进程。
2、轮换日志
首先将日志更名,USR1发送后,主进程从新打开已经被打开的日志并分配存活的工做进程,主进程关闭全部文件后通知工做进程重从新打开文件,工做进程新建文件,关闭旧文件。
这个主、工做进程,反复打开关闭文件我太懂,日志是主进程管理的么?USR1以后分给工做进程处理了?
3、更新二进制文件
更新以前先备份,替换后执行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结尾的文件是什么意思