這篇教程簡單介紹了 nginx 并且講解了一些 nginx 可以解決的簡單任務。這里,我們假設 nginx 已經安裝在讀者的機器上。如果沒有,可以看一下如何安裝 nginx。這篇教程主要講解的是如何啟用和停止nginx,和重新加載配置,描述配置文件的基本結構和怎樣搭建一個 nginx 靜態輔助器,怎樣配置 nginx 作為一個代理服務器來。
nginx 有一個主進程和其他子進程。主進程的主要工作是加載和執行配置文件,并且駐留子進程。子進程用來作為實際的請求處理。nginx 采取基于事件的模型和 OS 依賴的機制,在多個子進程之間高效的分配請求。子進程的個數會直接寫在配置文件中并且,對于給定的配置可以是固定的,或者根據可用的 CPU 核數自動的進行調整(參考 子進程)。
nginx 和它模塊的工作方式是在配置文件中寫好的。默認情況下,這個配置文件通常命名為 nginx.conf 并且會放置在 /usr/local/nginx/conf
, /etc/nginx
,或者 /usr/local/etc/nginx
。
啟用,停止和重載配置
運行可執行文件就可以開啟 nginx,比如:
// -c 為 nginx 的配置文件nginx -c /usr/local/nginx/conf/nginx.conf
如果,nginx 已經開啟,那么它就可以通過使用 -s 參數的可執行命令控制。使用下列格式:
nginx -s signal
signal 可以為下列命令之一:
stop ― 直接關閉 nginx quit ― 會在處理完當前正在的請求后退出,也叫優雅關閉 reload ― 重新加載配置文件,相當于重啟 reopen ― 重新打開日志文件比如,等待當前子進程處理完正在執行的請求后,結束 nginx 進程,可以使用下列命令:
nginx -s quit
執行該命令的用戶需要和啟動的 nginx 的用戶一致。
如果重載配置文件的命令沒有傳遞給 nginx 或者 nginx 沒有重啟,那么配置文件的改動是不會被使用的。重載配置文件的命令可以使用:
nginx -s reload
一旦主進程接收到重載配置文件的命令后,它會先檢查配置文件語法的合法性,如果沒有錯誤,則會重新加載配置文件。如果成功,則主進程會重新創建一個子進程并且發送關閉請求給以前的子進程。如果沒有成功,主進程會回滾改動并且繼續使用以前的配置。老的子進程在接受關閉的命令后,會停止接受新的請求并且繼續處理當前的請求,直到處理完畢。之后,該子進程就直接退出了。
在 Unix 工具的幫助下,比如使用 kill 工具,該信號會被發送給 nginx 進程。在這種情況下,信號會被直接發送給帶有進程 ID 的進程。nginx 的主進程的進程 ID 是寫死在 nginx.pid 文件中的。該文件通常放在 /usr/local/nginx/logs 或者 /var/run 目錄下。比如,如果主進程的 ID 是 1628,為了發送 QUIT 信號來使 nginx 優雅退出,可以執行:
kill -s QUIT 1628
為了得到所有正在運行的 nginx 進程,我們可能會使用到 ps 工具,比如,像下列的方式:
$ ps -ax | grep nginx// 結果為:(下面是單核 CPU 的情況) 516 pts/0 D+ 0:00 grep --color=auto nginx 1156 ? S 1:22 nginx: worker process27999 ? Ss 0:00 nginx: master process ./nginx
更多關于發送信號給 nginx,可以參考nginx 控制。
配置文件結構
nginx 是由一些模塊組成,我們一般在配置文件中使用一些具體的指令來控制它們。指令被分為簡單指令和塊級命令。一個簡單的指令是由名字和參數組成,中間用空格分開,并以分號結尾。例如:
新聞熱點
疑難解答