#nginx運行工作進程個數,一般設置cpu的核心或者核心數x2
worker_processes 12;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
#nginx採用epoll事件模型,處理效率高
use epoll;
#單個worker進程允許客戶端最大連接數(65535爲端口數量,超出部分無法連接)
worker_connections 20480;
#告訴nginx收到一個新連接通知後接受盡可能多的連接,默認是on,設置爲on後,多個worker按串行方式來處理連接,也就是一個連接只有一個worker被喚醒,其他的處
#於休眠狀態,設置爲off後,多個worker按並行方式來處理連接,也就是一個連接會喚醒所有的worker,直到連接分配完畢,沒有取得連接的繼續休眠。
#當你的服務器連接數不多時,開啓這個參數會讓負載有一定的降低,但是當服務器的吞吐量很大時,爲了效率,可以關閉這個參數
multi_accept off;
}
http {
#表示 客戶端請求服務器最大允許的數據大小
client_body_buffer_size 20m;
#關閉緩衝,防止下載文件不完整
proxy_buffering off;
#讀取fastcgi應答第一部分需要多大緩衝區,該值表示使用1個64kb的緩衝區讀取應答第一部分(應答頭),可以設置爲fastcgi_buffers選項緩衝區大小
fastcgi_buffer_size 128k;
#指定本地需要多少和多大的緩衝區來緩衝fastcgi應答請求,一般該值應該爲站點中php/java腳本所產生頁面大小中間值
fastcgi_buffers 4 128k;
##默認值是fastcgi_buffer的2倍
fastcgi_busy_buffers_size 256k;
#設置用於處理請求壓縮的緩衝區數量和大小。比如32 4K表示按照內存頁
#(one memory page)大小以4K爲單位(即一個系統中內存頁爲4K),申請32倍的內存空間。建議此項不設置,使用默認值。
gzip_buffers 16 8k;
#Nginx不會嘗試獲取到後端服務器所有響應數據之後才返回給客戶端,Nginx 會盡快把數據傳給客戶端,在數據傳完之前,Nginx 接收到的最大緩存大小不能超過
proxy_buffer_size 64k;
#處理後端響應,一般是代理服務器請求後端服務的response。如果這個buffer不夠大,會引起磁盤IO,response的body內容會先寫入臨時目錄中。
proxy_buffers 4 128k;
#處理後端繁忙請求時 緩衝器的大小
proxy_busy_buffers_size 256k;
#連接超時時間
keepalive_timeout 240;
#是指nginx進程向fastcg鏈接超時時間
fastcgi_connect_timeout 600;
#是指nginx進程向fastcgi進程發送request的整個過程的超時時間
fastcgi_send_timeout 600;
#是指fastcgi進程向nginx進程發送response的整個過程的超時時間
fastcgi_read_timeout 600;
#nginx跟後端服務器連接超時時間(代理連接超時)
proxy_connect_timeout 600;
#這個指定設置了發送請求給upstream服務器的超時時間。超時設置不是爲了整個發送期間,
#而是在兩次write操作期間。如果超時後,upstream沒有收到新的數據,nginx會關閉連接
proxy_send_timeout 1200;
#說明 該指令設置與代理服務器的讀超時時間。它決定了nginx會等待多長時間來獲得請求的響應。這個時間不是獲得整個response的時間,而是兩次reading操作的時間
proxy_read_timeout 1200;
#並不會讓nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本數字,這樣對於安全性是有好處的。
server_tokens off;
# 媒體類型,include 只是一個在當前文件中包含另一個文件內容的指令
include mime.types;
#默認媒體類型,如: application/octet-stream;
default_type application/octet-stream;
#設置nginx是否存儲訪問日誌。關閉這個選項可以讓讀取磁盤IO操作更快
access_log off;
#sendfile 可以讓sendfile()發揮作用。sendfile()可以在磁盤和TCP socket之間互相拷貝數據(或任意兩個文件描述符)。
#Pre-sendfile是傳送數據之前在用戶空間申請數據緩衝區。之後用read()將數據從文件拷貝到這個緩衝區,write()將緩衝區數據寫入網絡。
#sendfile()是立即將數據從磁盤讀到OS緩存。因爲這種拷貝是在內核完成的,sendfile()要比組合read()和write()以及打開關閉丟棄緩衝更加有效
sendfile on;
#必須在sendfile開啓模式纔有效,防止網路阻塞,積極的減少網絡報文段的數量
#(將響應頭和正文的開始部分一起發送,而不一個接一個的發送。)
tcp_nopush on;
#client_header_timeout 和client_body_timeout 設置請求頭和請求體(各自)的超時時間。我們也可以把這個設置低些。
client_header_timeout 30;
client_body_timeout 30;
#指定客戶端的響應超時時間。這個設置不會用於整個轉發器,而是在兩次客戶端讀取操作之間。如果在這段時間內,客戶端沒有讀取任何數據,nginx就會關閉連接
send_timeout 5;
#告訴nginx關閉不響應的客戶端連接。這將會釋放那個客戶端所佔有的內存空間。
reset_timedout_connection on;
#設置nginx服務允許用戶最大上傳數據大小
client_max_body_size 20m;
#是告訴nginx採用gzip壓縮的形式發送數據。這將會減少我們發送的數據量
gzip on;
#設置允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取,
#默認值是0,不管頁面多大都進行壓縮,建議設置成大於1000,如果小與1K可能會越壓越大
gzip_min_length 1000;
#壓縮比例,用來指定GZIP壓縮比,1壓縮比最小,處理速度最快,9壓縮比最大,傳輸速度快,但是處理慢,也比較消耗CPU資源。
gzip_comp_level 5;
#expired - 啓用壓縮,如果header頭中包含 "Expires" 頭信息
#no-cache - 啓用壓縮,如果header頭中包含 "Cache-Control:no-cache" 頭信息
#no-store - 啓用壓縮,如果header頭中包含 "Cache-Control:no-store" 頭信息
#private - 啓用壓縮,如果header頭中包含 "Cache-Control:private" 頭信息
#auth - 啓用壓縮 , 如果header頭中包含 "Authorization" 頭信息
gzip_proxied expired no-cache no-store private auth;
#可以壓縮的文件類型
gzip_types text/plain application/xml application/javascript text/css application/octet-stream;
#varyheader支持,改選項可以讓前端的緩存服務器緩存經過GZIP壓縮的頁面,例如用Squid緩存經過nginx壓縮的數據。
gzip_vary on;
#引入文件
include services/*.conf;
}
Nginx 部分配置詳解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.