## 核心參數
* user
* pid
* worker_rlimit_nofile
* worker_rlimit_core
* worker_processess
* worker_cpu_affinity
* worker_priority
* worker_shutdown_timeout
* timer_resolution
* daemon
* lock_file
## user
```
user USERNAME [GROUP]
```
指定運行的nginx的worker子進程的屬主和屬組,其中屬組可以不指定;
示例 :
```
user nginx nginx;
```
## pid
```
pid DIR
```
指定運行nginx的master的主進程的pid文件存放路徑
示例:
```
pid /opt/nginx/logs/nginx.pid;
```
## worker_rlimit_nofile
```
worker_rlimit_nofile number
```
指定每個worker子進程可以打開的最大文件句柄數,Linux最大的限制是65535;
示例:
```
worker_rlimit_nofile 20480;
```
## worker_rlimit_core
```
worker_rlimit_core size
```
指定worker子進程異常終止后的core文件,用于記錄分析問題;配置的目錄必須要有寫的權限;
示例:
```
worker_rlimit_core 50M;
worker_directory /opt/nginx/tmp;
```
## worker_processess
```
worker_processess number | auto
```
指定nginx啟動的worker子進程數量;auto會自動啟動和物理核心個數一致的數量;
示例:
```
worker_processess 4;
worker_processess auto;
```
## worker_cpu_affinity
```
worker_cpu_affinity cpumask1 cpumask2...
```
將每個worker子進程與我們的CPU物理核心綁定;這里的綁定不是指worker子進程完全占用了一個核心的計算資源;而是說只獲取獲得此核心的時間片;不會使用其他的核心的時間片;

示例:
```
worker_cpu_affinity 0001 0010 0100 1000 #4個物理核心,4個worker進程
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 010000010 10000000 #8個物理核心,8個worker進程
worker_cpu_affinity 01 10 01 10 #2個物理核心,4個子進程
```
備注:將每個worker子進程與特定的CPU物理核心綁定,優勢在于:避免同一個worker子進程在不同的CPU核心上切換,緩存失效,降低性能;其并不能真正的避免進程切換;
## worker_priority
```
worker_priority number
```
指定worker子進程的nice值,以調整運行nginx的優先級,通常設定為負數,以優先調用nginx;
示例:
```
worker_priority -10;
```
備注:Linux默認進程的優先值是120,值越小越優先,nice設定范圍為-20到+19;
## worker_shutdown_timeout
```
worker_shutdown_timeout time
```
指定worker子進程優雅退出時的超時時間;熱部署的時候會給子進程發送一個優雅退出的指令;worker不會直接關閉進程,而是將客戶端的請求處理完畢才會退出;有很多客戶端異常了,和nginx建立TCP連接后,就是不發送請求,或是不返回回應.那么worker不能一直等待,當超過優雅退出的超時時后,worker自動退出;
示例:
```
worker_shutdown_timeout 5s
```
## timer_resolution
```
timer_resolution interval
```

worker子進程內部使用的計時器精度,調整時間間隔越大,系統調用越少,有利于性能提升;反之,系統調用越多,性能下降;
**計時器解析度:降低此值,可減少gettimeofday()系統調用的次數;**
??? 這種無謂的系統調用次數或者是我們用不到那么高的時候,降低這個值減少這個次數會在一定意義上提升Nginx性能的或者提升我們整個系統性能的。對于一個非常繁忙的服務器這點是不容忽略的。
??? 可用來減少降低worker線程中的計時器的解析度,降低解析度以后帶來的結果是,說白了就是減少發起gettimeofday()這么一個系統調用,任何一個進程運行過程當中,如果系統調用很多,任何一次系統調用的發生必然會產生軟中斷,產生軟中斷的直接結果就是模式轉換,每一次的模式轉換必然會消耗時間。因為我們說過很多次,一個生產力非常強的進程應該把大量時間用在用戶空間,那因此timer\_resolution這個時間解析度為什么要用到這個東西呢?
??? 我們簡單舉個例子:比如任何一個請求到達Nginx的時候Nginx就得響應它,響應完以后就得記錄日志了,但是到日志中會記錄時間。那因此一旦有用戶請求到達,我們這邊處理響應而要記錄日志的話那么它必須要獲取系統當前時間并記錄在日志文件中。怎么獲取系統時間呢?通過gettimeofdate來獲取時間而后把這個結果再保存到日志文件中。而如果我們的時間解析度過大的話,就可能帶來的結果是他一秒鐘就解析一千次,一秒鐘就發起一千次系統調用,如果我把這個降低一點,比如100ms解析一次,那就意味著一秒鐘只解析10次了。如果指定1s一次那就意味著1s鐘只解析1次,但是我們知道時間解析度越低它的精準度就越小,時間解析度越高精度就越高,正如我們的顯示器一樣,分辨率越高,顯示的就越逼真越清晰但是它所需要消耗的資源一定也是越大的。
??? 那因此為了提高性能,這個時間解析度應該是降低的。只要我們對于它的時間解析度要求不是特別高的話。
示例:
```
timer_resolution 100ms;
```
## daemon
```
daemon on | off
```
設定nginx的運行方式,前臺還是后臺,前臺用戶調試,后臺用于生產;
示例:
```
daemon off
```
## lock_file
需要將accept_mutex設為on有意義;
```
lock_file file
```
負載均衡互斥鎖文件存放路徑;
默認配置:
```
lock_file /logs/nginx.lock;
```
推薦配置:
```
lock_file /logs/nginx.lock;
```
- NginX簡述
- 什么是中間件
- NginX概述
- 選擇NginX的理由
- NginX環境安裝
- 四項確認
- NginX安裝
- 安裝
- 安裝目錄詳解
- 編譯參數詳解
- Nginx主目錄
- 基于NginX的中間件架構
- Nginx日志類型
- Nginx變量
- 常見NginX中間架構
- 靜態資源web服務
- 概述
- 靜態資源服務場景-CDN
- 瀏覽器緩存原理
- 跨站訪問
- 防盜鏈
- 代理服務
- 概述
- 配置語法
- 其他配置語法
- 負載均衡調度器SLB
- 概述
- 配置
- 動態緩存
- ====分割線====
- Nginx初體驗
- nginx簡介
- 請求全流程
- nginx核心優勢
- 安裝第一個rpm包nginx
- Nginx進程結構與熱部署
- 進程結構
- 信號量管理nginx
- 配置文件重載原理真相
- nginx熱部署
- nginx模塊化管理機制
- nginx編譯安裝的配置參數
- nginx配置文件結構
- 虛擬主機的分類
- Nginx核心指令基礎應用
- main段核心參數用法
- events段核心參數用法
- HTTP段核心參數用法
- server_name
- server_name指令用法優先級
- root和alias的區別
- location的基礎用法
- location指令中匹配規則的優先級
- 深入理解location中URL結尾的反斜線
- stub_status模塊用法
- Nginx應用進階
- connection和request
- 對connection做限制的limit_conn模塊
- 對request處理速率做限制的limit_req模塊
- 限制特定IP或網段訪問的access模塊
- 限制特定用戶訪問的auth_basic模塊
- 基于HTTP響應狀態碼做權限控制的auth_request模塊
- rewrite模塊
- return指令
- rewrite指令
- return和rewrite指令執行順序
- if指令
- autoindex模塊用法
- Nginx的變量
- 變量分類
- TCP連接相關變量
- 發送HTTP請求變量
- 處理HTTP請求變量
- 反向代理
- 基礎原理
- 動靜分離
- nginx作為反向代理支持的協議
- 用于定義上游服務的upstream模塊
- upstream模塊指令用法詳解
- 配置一個可用的上游應用服務器
- proxy_pass常見誤區
- 代理場景下nginx接受用戶請求包體的處理方式
- 代理場景下Nginx更改發往上游的用戶請求
- 代理場景下Nginx與上游服務建立連接細節
- 基于fastcgi的反向代理
- 負載均衡
- 負載均衡基礎
- 實現nginx對上游服務負載均衡
- 負載均衡hash算法
- 負載均衡ip_hash算法
- 負載均衡最少連接數算法
- 針對上游服務器返回異常時的容錯機制
- Nginx緩存
- 緩存基礎
- 緩存相關指令
- 緩存用法配置示例
- 配置nginx不緩存上游服務特定內容
- 緩存失效降低上游壓力機制1-合并源請求
- 緩存失效降低上游壓力機制2-啟用陳舊緩存
- 第三方清除模塊ngx_cache_purge介紹
- ngx_cache_purge用法配置示例
- Nginx和HTTPS
- https原理基礎
- https如何解決信息被竊聽的問題
- https如何解決報文被篡改以及身份偽裝問題
- 配置私有CA服務器
- 組織機構向CA申請證書及CA簽發證書
- 深入Nginx架構
- Nginx性能優化