深入理解 Nginx 讀書筆記 (第二章)
進程間的關係
- Nginx 支持僅單進程(master)提供服務
- 常態的部署是使用一個 master 進程來管理多個 worker 進程
- Worker 數量與 CPU 核心數相等,進程切換代價最小
使用多進程的好處
- master 進程僅專注於純管理工作,為管理員提供命令行服務(啟動、停止、重配置、升級)
- master 進程需要比較大的權限,通常會以 root 使用者啟動
- 一個 worker 進程出錯後,其他 worker 仍然可以正常服務
- 充分利用 SMP(Symmetric multiprocessing) 多核架構,實現微觀上真正的多核併發處理
- Worker 通常不會進入睡眠狀態:可以同時處理多個請求,不像 Apache 每個進程只能同時處理一個請求,以致進程切換代價大
配置語法
每個模組都有自己感興趣的配置項,大部分模組都必須在 nginx.conf
中讀取到某個配置後才會啟用,例如只有當配置 http {…} 時, ngx_http_module
模組才會啟用,其他依賴的模組也才能正常使用
區塊配置項
1 2 3 4 5 6 7 8 9 10 11 |
http { ... gzip on; server { ... location /webstatic { gzip off; } } } |
- 由名稱及一對大括號組成,如
http
,server
,location
都屬於區塊配置項 - 傳入的參數取決於解析這個區塊配置項的模組
- 大括號表示包含其中的配置同時生效
- 可以嵌套,內層配置直接繼承外層
- 當內外層配置發生衝突,以哪層配置為準,取決於解析這個區塊配置項的模組,例如範例的
gzip
開關
配置項語法格式
1 2 |
名稱 參數1 參數2; |
- 名稱必須合法的(是某個 Nginx 模組想要處理的)
- 傳入的參數取決於解析這個區塊配置項的模組
- 若任一參數包含空格符,須要用單引號或雙引號包住
- 以分號結尾