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結尾的文件是什麼意思