1)nginx進程數,建議按照cpu數目來指定,一般跟cpu核數相同或為它的倍數。
worker_processes 8;
2)為每個進程分配cpu,上例中將8個進程分配到8個cpu,當然可以寫多個,或者將一個進程分配到多個cpu。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
3)下面這個指令是指當一個nginx進程打開的最多文件描述符數目,理論值應該是系統的最多打開文件數(ulimit -n)與nginx進程數相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n的值保持一致。
worker_rlimit_nofile 65535;
4)使用epoll的I/O模型,用這個模型來高效處理異步事件
use epoll;
5)每個進程允許的最多連接數,理論上每臺nginx服務器的最大連接數為worker_processes*worker_connections。
worker_connections 65535;
6)http連接超時時間,默認是60s,功能是使客戶端到服務器端的連接在設定的時間內持續有效,當出現對服務器的后繼請求時,該功能避免了建立或者重新建立連接。切記這個參數也不能設置過大!否則會導致許多無效的http連接占據著nginx的連接數,終nginx崩潰!
keepalive_timeout 60;
7)客戶端請求頭部的緩沖區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過1k,不過由于一般系統分頁都要大于1k,所以這里設置為分頁大小。分頁大小可以用命令getconf PAGESIZE取得。
client_header_buffer_size 4k;
8)下面這個參數將為打開文件指定緩存,默認是沒有啟用的,max指定緩存數量,建議和打開文件數一致,inactive是指經過多長時間文件沒被請求后刪除緩存。
open_file_cache max=102400 inactive=20s;
9)下面這個是指多長時間檢查一次緩存的有效信息。
open_file_cache_valid 30s;
10)open_file_cache指令中的inactive參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive時間內一次沒被使用,它將被移除。
open_file_cache_min_uses 1;
11)隱藏響應頭中的有關操作系統和web server(Nginx)版本號的信息,這樣對于安全性是有好處的。
server_tokens off;
12)可以讓sendfile()發揮作用。sendfile()可以在磁盤和TCP socket之間互相拷貝數據(或任意兩個文件描述符)。Pre-sendfile是傳送數據之前在用戶空間申請數據緩沖區。之后用read()將數據從文件拷貝到這個緩沖區,write()將緩沖區數據寫入網絡。sendfile()是立即將數據從磁盤讀到OS緩存。因為這種拷貝是在內核完成的,sendfile()要比組合read()和write()以及打開關閉丟棄緩沖更加有效(更多有關于sendfile)。
sendfile on;
13)告訴nginx在一個數據包里發送所有頭文件,而不一個接一個的發送。就是說數據包不會馬上傳送出去,等到數據包最大時,一次性的傳輸出去,這樣有助于解決網絡堵塞。
tcp_nopush on;
14)告訴nginx不要緩存數據,而是一段一段的發送–當需要及時發送數據時,就應該給應用設置這個屬性,這樣發送一小塊數據信息時就不能立即得到返回值。
tcp_nodelay on;
比如:
http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
……
}
15)客戶端請求頭部的緩沖區大小,這個可以根據系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由于一般系統分頁都要大于1k,所以這里設置為分頁大小。
client_header_buffer_size 4k;
客戶端請求頭部的緩沖區大小,這個可以根據系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由于一般系統分頁都要大于1k,所以這里設置為分頁大小。
分頁大小可以用命令getconf PAGESIZE取得。
[root@test-huanqiu ~]# getconf PAGESIZE
4096
但也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設置為“系統分頁大小”的整倍數。
16)為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時間文件沒被請求后刪除緩存。
open_file_cache max=65535 inactive=60s;
17)open_file_cache 指令中的inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive 時間內一次沒被使用,它將被移除。
open_file_cache_min_uses 1;
18)指定多長時間檢查一次緩存的有效信息。
open_file_cache_valid 80s;