Nginx 重啟/修改conf後生效

Nginx 重啟/修改conf後生效

转载自 http://wp.rdandy.com/archives/226

1.程序運行參數
Nginx 安裝後只有一個程序文件,本身並不提供各種管理程序,它是使用參數和系統信號機制對 Nginx 進程本身進行控制的。
Nginx 的參數包括有如下幾個:

-c <path_to_config>:使用指定的配置文件而不是 conf 目錄下的 nginx.conf 。
-t:測試配置文件是否正確,在運行時需要重新加載配置的時候,此命令非常重要,用來檢測所修改的配置文件是否有語法錯誤。
-v:顯示 nginx 版本號。
-V:顯示 nginx 的版本號以及編譯環境信息以及編譯時的參數。

例如我們要測試某個配置文件是否書寫正確,我們可以使用以下命令
sbin/nginx –t –c conf/nginx2.conf

2.通過信號對 Nginx 進行控制

Nginx 支持下表中的信號:

信號名 作用描述
TERM, INT 快速關閉程序,中止當前正在處理的請求
QUIT 處理完當前請求後,關閉程序
HUP 重新加載配置,並開啟新的工作進程,關閉就的進程,此操作不會中斷請求
USR1 重新打開日誌文件,用於切換日誌,例如每天生成一個新的日誌文件
USR2 平滑升級可執行程序
WINCH 從容關閉工作進程

有兩種方式來通過這些信號去控制 Nginx,第一是通過 logs 目錄下的 nginx.pid 查看當前運行的 Nginx 的進程 ID,通過 kill –XXX <pid> 來控制 Nginx,其中 XXX 就是上表中列出的信號名。

語法可參考如下:(http://www.ruby-forum.com/topic/178934)

ps aux | egrep '(PID|nginx)'
# and kill the PID
kill -HUP PID

如果您的系統中只有一個 Nginx 進程,那您也可以通過 killall 命令來完成,例如運行 killall –s HUP nginx 來讓 Nginx 重新加載配置。

但更新 conf 後最好不是 restart Nginx,而是先刪除正在執行的工作,然後再啟動 Nginx

補充手動重啟 Nginx 的方法:(http://www.ruby-forum.com/topic/178934)

sudo kill -HUP `cat /path/to/logs/nginx.pid`

※ /path/to/nginx.pid 有的系統會在 /var/run/nginx.pid

我的完整指令:

啟動:
sudo ./usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

重載 conf:
sudo kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

猜你喜欢

转载自stephen830.iteye.com/blog/2009262