Nginx 部分配置詳解

#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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章