nginx執行時至少載入幾個核心模組和乙個事件類模組
按功能分類
除錯、定位問題的配置
正常執行必備配置
優化效能配置
事件類配置(有些事件類配置歸入優化類,雖為events{},但作用為優化效能)
除錯、定位問題配置
1.守護程序方式執行nginx
daemon on/off 預設on
daemon(守護程序)是脫離終端且後台執行程序,避免程序執行中資訊在終端顯示,且程序也不會被終端顯示資訊干擾
2.master/worker方式工作
master_process on/off 預設on
若off,則由master程序自身處理請求
3.日誌設定
error_log path level ; 預設error_log logs / error.log error
日誌級別debug、info、notice、warn、error、crit、alert、emerg依次遞增
若日誌設定debug,需要在configure加入 --with-debug,且路徑資料夾磁碟空間足夠
4.處理幾個特殊調試點
debug_points stop /abort
stop時nginx**執行到這些調試點會發出sigstop訊號用於除錯
abort則會產生乙個core dump檔案,gdb可檢視nginx當時資訊
5.指定客戶端輸出debug級別日誌 -----》 屬於事件類配置,需要在events{}中
debug_connection ip / cdir events
6.限制coredump 核心轉儲檔案的大小
worker_rlimit_core size;
核心轉儲:linux中,程序發生錯誤或收到訊號終止時,系統會將程序執行時的記憶體內容(核心映像)寫入乙個檔案
(core檔案中),作為除錯之用
7.指定coredump檔案生成目錄
working_directory path;
worker的工作目錄用於設定coredump檔案存放目錄,worker程序有權向目錄中寫入檔案
正常執行的配置
1.定義環境變數
env varivar=value
可以直接操作呼叫系統環境變數
2.嵌入其他配置檔案
include path; 路徑絕對相對皆可
3.pid檔案路徑
pid path/file; 預設pid logs/nginx.pid
預設與configure執行時的引數 「--pid-path」指定路徑相同,也可以修改該檔案直接影響nginx執行
4.niginx worker程序執行的使用者組
user username / groupname 預設 user nobody nobody
5.指定nginx worker程序可以開啟的最大控制代碼描述個數
worker_rlimit_nofile limit
6.限制訊號佇列
worker_rlimit_sigpending limit
設定每個使用者發往nginx訊號佇列大小。當某個使用者訊號佇列滿,該使用者再傳送的訊號會被丟棄
優化效能配置
1.nginx worker 程序個數
worker_processes number 預設 worker_processes 1
每個worker都是單執行緒的程序,會呼叫各個模組以實現多種多樣的功能。
如果這些模組確認不會出現阻塞式呼叫,則多少cpu核心配置多少worker
若有可能出現阻塞式呼叫,則可多配置worker
2.繫結nginx worker 程序到指定cpu核心
worker_cpu_coffinity cpumask
將worker繫結指定的cpu,防止多個worker使用同乙個cpu出現同步現象,每個worker使用乙個cpu可實現完全的併發
3.ssl硬體加速
ssl_engine device
若伺服器上有ssl硬體加速裝置,可以配置已加快ssl協議的處理速度,open ssl可檢視是否有ssl裝置
4.系統呼叫gettimeofday的執行頻率
timer_resolution time
一般不必使用,若希望日誌檔案每行列印時間更準確,可以使用
5.nginx worker 程序優先順序設定
worker_priority nice 預設 0
程序優先順序越大,占用分配cpu資源越多,值為-20-19,一般不建議大於-5(核心程序)
事件類配置
1.是否開啟accept鎖
accept_mutex on/off 預設on
可以讓多個worker程序輪流的、序列化的與新客戶端建立tcp連線。當某個worker程序建立的連線數量
達worker_connection 配置的最大數的7/8,會減少該worker建立連線的機會,實現均衡
2.lock檔案路徑
lock_file path/file 預設 lock_file logs/nginx.lock
accept鎖開啟,若因程式編譯,作業系統**等不支援原子鎖,才會用檔案鎖實現accept鎖,該配置生效
3.accept鎖到真正建立連線之間的延遲時間
accept_mutex_delay x ms 預設 500ms
accept鎖使用後,同時間只有乙個worker程序能夠取到accept鎖,並不是阻塞鎖,拿不到則返回等acce4.pt_mutex_delay
後再嘗試
4.批量建立連線
multi_accept on/off 預設 off
當事件模型通知有新連線時,盡可能對本次排程中客戶端發起的所有tcp請求都建立連線
5.選擇事件模型
use kqueue /rstig/epoll/ | /dev/poll | select | /pool/eventport
nginx選擇最合適模型中(手動),linux中epoll、poll、select 三種epoll效能最好
6.每個worker的最大連線數
worker_connections number
nginx請求的完整過程
請求過來----->建立連線----->接受資料------->傳送資料
底層中使用者會請求核心,進入核心拿去資源。當讀寫事件未準備好時,只能等到,阻塞呼叫會進入核心等待,cpu則會給別的請求使用。對於單執行緒的worker而言,網路請求越多,請求等待佇列越長,而cpu卻空閒。
因此非阻塞呼叫更適合,事件沒有準備好,馬上返回eagain告訴程序還未準備好,過段時間再來。因此程序會去完成其他的工作,但會不時檢視原請求是否準備好,代價也大。
因此非同步更符合,可以同時監控多個事件,呼叫他們是阻塞的,但可設定超越時間,在該事件內有事件完成則返回。以epoll為例,事件未準備好,就放在epoll中,ok了就讀寫。worker執行緒即在各請求之間不斷切換,並不消耗資源,只是請求占用記憶體
(此處並非請求,指未處理好的請求)
http相關的配置
核心模組 ngx_http_core_module
nginx -t 檢視nginx主配置檔案 ----->/etc/nginx/nginx.conf
若在主配置檔案下增添虛擬主機,應位於http{}模組內
server
基於port listen port ; 指定監聽埠
基於ip的虛擬主機 listen ip:port;
基於hostname server_name ***xx;
可加入限制條目
default_server 設定為預設虛擬主機
ssl 限制僅通過ssl連線提供服務
backlog=number 超過併發連線數後,請求進後援佇列長度
rcvbuf=size 接受區緩衝大小
sndbuf=size 傳送區緩衝大小
Nginx基本配置
基本的 優化過的 配置 我們將修改的唯一檔案是nginx.conf,其中包含nginx不同模組的所有設定。你應該能夠在伺服器的 etc nginx目錄中找到nginx.conf。首先,我們將談論一些全域性設定,然後按檔案中的模組挨個來,談一下哪些設定能夠讓你在大量客戶端訪問時擁有良好的效能,為什麼它...
nginx基本配置
linux 配置 nginx 基本 1.首先安裝編輯器 因為nginx 是c 語言編寫的 yum y install make zlib zlib devel gcc c libtool openssl openssl devel 2 安裝pcre pcre 重要是讓linux 支援 rw 功能 解...
nginx 基本配置
user nobody worker processes 1 子程序,nginx啟動會有1個master程序和若干個子程序 error log logs error.log debug info notice warn error crit 日誌級別 這樣,當使用者請求 位址時,nginx 就會自動...