nginx服務的基本配置

Nginx在運行時,至少必須加載幾個核心模塊和一個事件類模塊。這些模塊運行時所支持的配置項稱爲基本配置。因爲配置項較多,因此把它們按照用戶使用時的預期功能分爲四類:
  • 用於調試、定位問題的配置項
  • 正常運行的必備配置項
  • 優化性能的配置項
  • 事件類配置項
1. 用於調試進程和定位問題的配置項
    (1) 是否以守護進程方式運行Nginx
語法:daemon on | off;
    (2) 是否以master/worker方式工做(若是爲off,則maser進程自身處理請求,不會fork出子進程)
語法:maser_process on | off;
    (3) error日誌的設置
       語法:error_log /path/file level;默認:error_log logs/error.log  error
level 是日誌的輸出級別,取值範圍是debug、info、notice、warn、error、crit、alert、emerg,從左至右級別依次增大。當設定爲一個級別時,大於或等於該級別的日誌都會被輸出到/path/file文件中,小於該級別的則不會輸出
   (4) 僅對指定的客戶端輸出debug級別的日誌
語法:debug_connection [IP | CIDR]  這個配置項屬於事件類配置,它必須放在events {....}中才有效。例如:
events {
debug_connection 10.224.66.14;
}
那麼,僅僅來自以上 Ip地址的請求才會輸出debug級別的日誌,其餘請求仍然使用error_log中配置的日誌級別。
    (5) 限制coredump核心轉儲文件的大小
語法:worker_rimit_core  size;
在Linux系統中,當進程發生錯誤或收到信號而終止時,系統會將進程執行時的內存內容(核心映像)寫入一個文件(core文件),以做調試用,這就是所謂的核心轉儲。
    (6) 指定coredump文件生成目錄
語法:working_directory  path;
2. 正常運行的配置項
   (1) 定義環境變量
語法:env  VAR|VAR=VALUE
    (2) 嵌入其餘配置項
語法:include  /path/file;
include配置項能夠將其餘配置文件嵌入到當前的nginx.conf文件中。
    (3) pid文件的路徑
語法:pid  path/file;
保存master進程ID的pid文件存放路徑。
    (4) Nginx worker進程運行的用戶及用戶組
語法:user  usernama  [groupname]
user用於設置master進程啓動後,fork出的子進程運行在哪一個用戶和用戶組下。
    (5) 指定Nginx worker進程能夠打開的最大文件句柄數
語法:worker_rlimit_nofile limit;
    (6) 限制信號隊列
語法:worker_rlimit_sigpending  limit;
3. 優化性能的配置項
    (1) Nginx worker 進程個數
語法:worker_processes  number;
通常狀況下,用戶要配置與CPU內核數相等的worker進程數,而且使用worker_cpu_affinity配置來綁定CPU內核。
    (2) 綁定Nginx worker 進程到指定的CPU內核
語法:worker_cpu_affinity  cpumask [cpumask ...]
例如,若是有4顆CPU內核,就能夠設置爲:
worker_processes  4;
worker_cpu_affinity  1000  0100  0010  0001;
cpumask:意思是有幾個CPU,就有幾位,1表示該內核開啓,0表示該內核關閉
    (3) SSL硬件加速
語法:ssl_engine  device;
若是服務器上有SSL硬件加速設備,那麼就能夠配置以加快SSL協議的處理速度。
    (4) Nginx worker進程優先級設置
語法:worker_priority  nice;
在Linux或其餘類Unix系統中,當許多進程都處於可執行狀態時,將按照全部進程的優先級來決定本次內核選擇哪個進程執行。進程所分配的時間片大小也與進程優先級相關,優先級越高,進程分配到的時間片也越大。nice值得範圍:-20 ~ +19。-20是最高優先級。若是但願nginx佔用更多的系統資源,能夠把nice值設置的小一點。
4. 事件類配置項
   (1) 是否打開accept鎖
語法:accept_mutex  [on | off]  默認是開啓的
accept_mutex是nginx的負載均衡鎖,accept_mutex這把鎖可讓多個worker進程輪流地、序列化地與新的客戶端創建TCP鏈接。當某一個worker進程創建的鏈接數量達到worker_connections配置的最大鏈接數的7/8時,會大大減少該worker進程試圖創建新的TCP鏈接的機會,依此實現全部worker進程之上處理的客戶端請求數儘可能接近。
    (2) 使用accept鎖後到真正創建鏈接之間的延遲時間
語法:accept_mutex_delay  Nms;
在使用accept鎖後,若是一個worker進程試圖取accept鎖沒有取到,它至少要等accept_mutex_delay定義的時間間隔後才能再次試圖取鎖。
    (3) 選擇事件模型
語法:use  [ kqueue | rtsig | epoll | /dev/poll | select | poll | eventport ]
epoll性能最高。
    (4) 每一個worker的最大鏈接數
語法:worker_connections  number;
相關文章
相關標籤/搜索