這篇教程簡(jiǎn)單介紹了 nginx 并且講解了一些 nginx 可以解決的簡(jiǎn)單任務(wù)。這里,我們假設(shè) nginx 已經(jīng)安裝在讀者的機(jī)器上。如果沒(méi)有,可以看一下如何安裝 nginx。這篇教程主要講解的是如何啟用和停止nginx,和重新加載配置,描述配置文件的基本結(jié)構(gòu)和怎樣搭建一個(gè) nginx 靜態(tài)輔助器,怎樣配置 nginx 作為一個(gè)代理服務(wù)器來(lái)。
nginx 有一個(gè)主進(jìn)程和其他子進(jìn)程。主進(jìn)程的主要工作是加載和執(zhí)行配置文件,并且駐留子進(jìn)程。子進(jìn)程用來(lái)作為實(shí)際的請(qǐng)求處理。nginx 采取基于事件的模型和 OS 依賴的機(jī)制,在多個(gè)子進(jìn)程之間高效的分配請(qǐng)求。子進(jìn)程的個(gè)數(shù)會(huì)直接寫在配置文件中并且,對(duì)于給定的配置可以是固定的,或者根據(jù)可用的 CPU 核數(shù)自動(dòng)的進(jìn)行調(diào)整(參考 子進(jìn)程)。
nginx 和它模塊的工作方式是在配置文件中寫好的。默認(rèn)情況下,這個(gè)配置文件通常命名為 nginx.conf 并且會(huì)放置在 /usr/local/nginx/conf, /etc/nginx,或者 /usr/local/etc/nginx。
啟用,停止和重載配置
運(yùn)行可執(zhí)行文件就可以開啟 nginx,比如:
// -c 為 nginx 的配置文件nginx -c /usr/local/nginx/conf/nginx.conf
如果,nginx 已經(jīng)開啟,那么它就可以通過(guò)使用 -s 參數(shù)的可執(zhí)行命令控制。使用下列格式:
nginx -s signal
signal 可以為下列命令之一:
比如,等待當(dāng)前子進(jìn)程處理完正在執(zhí)行的請(qǐng)求后,結(jié)束 nginx 進(jìn)程,可以使用下列命令:
nginx -s quit
執(zhí)行該命令的用戶需要和啟動(dòng)的 nginx 的用戶一致。
如果重載配置文件的命令沒(méi)有傳遞給 nginx 或者 nginx 沒(méi)有重啟,那么配置文件的改動(dòng)是不會(huì)被使用的。重載配置文件的命令可以使用:
nginx -s reload
一旦主進(jìn)程接收到重載配置文件的命令后,它會(huì)先檢查配置文件語(yǔ)法的合法性,如果沒(méi)有錯(cuò)誤,則會(huì)重新加載配置文件。如果成功,則主進(jìn)程會(huì)重新創(chuàng)建一個(gè)子進(jìn)程并且發(fā)送關(guān)閉請(qǐng)求給以前的子進(jìn)程。如果沒(méi)有成功,主進(jìn)程會(huì)回滾改動(dòng)并且繼續(xù)使用以前的配置。老的子進(jìn)程在接受關(guān)閉的命令后,會(huì)停止接受新的請(qǐng)求并且繼續(xù)處理當(dāng)前的請(qǐng)求,直到處理完畢。之后,該子進(jìn)程就直接退出了。
在 Unix 工具的幫助下,比如使用 kill 工具,該信號(hào)會(huì)被發(fā)送給 nginx 進(jìn)程。在這種情況下,信號(hào)會(huì)被直接發(fā)送給帶有進(jìn)程 ID 的進(jìn)程。nginx 的主進(jìn)程的進(jìn)程 ID 是寫死在 nginx.pid 文件中的。該文件通常放在 /usr/local/nginx/logs 或者 /var/run 目錄下。比如,如果主進(jìn)程的 ID 是 1628,為了發(fā)送 QUIT 信號(hào)來(lái)使 nginx 優(yōu)雅退出,可以執(zhí)行:
新聞熱點(diǎn)
疑難解答
圖片精選