nginx引數詳解與效能優化

2021-08-21 08:23:12 字數 3855 閱讀 3265

user:指定nginx worker程序的使用者以及使用者組;

work_processes:是個主模組指令,制定了nginx要開啟的程序數。每個nginx程序平均耗費10m-12m記憶體;根據經驗一般設定乙個程序足夠了;如果是多核cpu;建議指定和cpu數量一樣多的程序數;

error_log:是個主模組指令,用來定義全域性錯誤日誌檔案;日誌輸出級別有debug、info、notice、crit可供選擇;其中debug輸出最為詳細,而crit輸出日誌最少;

pid是主模組指令,用來指定程序id的儲存檔案位置;

worker_rlimit_nofile:用於指定乙個nginx程序可以開啟的最多檔案描述符數目,這裡是65535;需要使用命令「ulimit -n 65535"來設定;

events指令用來設定nginx的工作模式及連線數上限;

use是事件模組指令;用來指定nginx的工作模式。nginx支援的工作模式有select、poll、kqueue/epool/rtsig和/dev/poll.對於linux作業系統而言,epoll工作模式是首選;

work_connections也是個事件模組指令,用於定義nginx每個程序的最大連線數;預設是1024;最大客戶端連線數由worker_processes和worker_connections決定;

注意:程序的最大連線數受linux系統程序的最大開啟檔案數限制,在執行作業系統命令:"ulimit -n 65535"後worker_connections的設定才生效;

http伺服器配置:

include:是個主模組命令,實現對配置檔案所包含檔案的設定,可以減少主配置檔案的複雜度;

default_type:屬於http核心模組指令,這裡設定預設型別為二進位製流,也就是當檔案型別未定義時使用這種方式;

log_format:是nginx的httplog模組指令,用於指定nginx日誌的輸出格式。main為此日誌輸出格式的名稱;可以在下面的access_log指令中使用;

client_max_body_size:用來設定允許客戶端請求的最大單個檔案位元組數;

client_header_buffer_size:用於指定來自客戶端請求頭的headerbuffer大小。對於大多數請求,1kb的緩衝區大小已經足夠;

keepalived_timeout:用於設定客戶端連線保持活動的超時時間;

client_header_timeout:用於設定客戶端連線保持活動的超時時間;如果超過這個時間,客戶端還沒有傳送任何資料;nginx將返回」request_time_out 408"的錯誤;

client_body_timeout:用於設定客戶端請求主體讀取時間,預設值為60.如果超過這個時間,客戶端還沒有傳送任何資料,nginx將返回"request time out(408)"錯誤;

檢視nginx是否安裝了某個模組,可以使用如下命令:nginx -v進行檢視;

httpgzip模組配置

引數說明:

gzip:用於設定開啟或者關閉gzip模組;「gzip on」表示開啟gzip壓縮,實時壓縮輸出資料流;

gzip_min_length :用於設定允許壓縮的頁面最小位元組數,頁面位元組數從header頭的content_length中獲取;預設值是0;不管頁面多大都進行壓縮;建議設定成大於1k的位元組數,小於1k的可能會越壓越大;

gzip_buffers 4  16k

gzip_buffers:表示申請4個單位為16k的記憶體作為壓縮結果流快取;預設值是申請與原始資料大小相同的記憶體空間來儲存gzip的壓縮結果;

gzip_http_version:用於設定識別http協議版本,預設為1.1;

gzip_comp_level:用來指定gzip壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但是處理速度慢,也比較消耗cpu資源;

gzip_types用來指定壓縮的型別,無論是否指定,「text/html"型別總是會被壓縮的;

gzip_vary:選項可以讓前端的快取伺服器快取經過gzip壓縮的頁面,例如,用squid經過nginx壓縮的資料;

負載均衡配置:

upstream  zylw

upstream是nginx的upstream模組;這個模組通過簡單的排程演算法來實現客戶端ip到後端伺服器的負載均衡。

nginx的負載均衡模組目前支援4種排程演算法,下面進行分別介紹:

輪訓排程演算法:預設的排程演算法。每個請求按時間順序逐一分配到不同的後端伺服器,如果後端某台伺服器宕機,故障系統自動剔除,使使用者訪問不受影響;

weight:weight值越大,分配到的訪問機率越高;

ip_hash:每個請求按照ip的hash結果分配;

url_hash:此方法按訪問url的hash結果進行分配請求,使每個url指向到同乙個後端伺服器;可以進一步提高後端快取伺服器的效率。nginx本身是不支援url_hash的,需要安裝nginx的hash軟體包。

在http upstream模組中,可以通過server指令指定後端伺服器的ip位址和埠,同時還可以設定每個後端伺服器在負載均衡排程中的狀態。常見的狀態有:

down:表示當前的server暫時不參與負載均衡;

backup:預留的伺服器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這台機器的壓力最輕;

max_fails:允許請求失敗的次數,預設是1,當超過最大數時,返回proxy_next_upstream模組定義的錯誤;

fail_timeout:在經歷了max_fails次失敗後,暫停服務的時間。max_fails可以和fail_time一起使用;

server虛擬主機的配置:

下面介紹對虛擬主機的配置:建議將對虛擬主機的配置的內容寫到另外乙個檔案中,然後通過include指令包含進來;

server  

server標誌定義虛擬主機的開始;listen用於指定虛擬主機的伺服器斷開;server_name用於指定ip位址或者網域名稱;多個網域名稱之間使用空格分開;index用於設定訪問的預設首頁位址;root指令用於指定虛擬主機的網頁根目錄;這個目錄可以是相對路徑,也可以是絕對路徑;charset用於設定網頁的預設編碼格式;

access_log   logs/www.xbniao.com.access.log  main;

access_log     用來指定此虛擬主機的訪問日誌存放路徑,後面的main用於指定訪問日誌的輸出格式;

url匹配配置:

url位址匹配是nginx配置中最靈活的部分。location支援正規表示式匹配,也支援條件判斷匹配,使用者可以通過location指令實現nginx對動、靜態網頁的過濾處理;

所有擴充套件名為.gif/jpg/png/bmp/swf的靜態檔案交給nginx處理,而expires用來指定靜態檔案的過期時間,這裡是30天;

以下這段是將upload和html下的所有檔案交給nginx來處理,當然upload和html目錄包含在/home/xbniao/xbniao.com的目錄下;

location   ~ ^/(upload|html)/

在最後這段設定中,location是對此虛擬主機下動態網頁的過濾處理,也就是將所有以.jsp為字尾的檔案都交給本機的8080埠處理;

location  ~  .*.jsp  

在最後的最後,設定虛擬主機的錯誤資訊返回頁面,通過error_page指令可以定製各種錯誤資訊的返回頁面。在預設情況下,nginx會在主目錄的html目錄中查詢指定的返回頁面。特別需要注意的是,這些錯誤資訊的返回頁面大小一定不要超過512kb;否則會被ie瀏覽器替換為ie預設的錯誤頁面;

error_page     404         /404.html;

error_page     500 502   503  504  /50x.html;

location  =  /50x.html  }}

Nginx效能優化

在http裡面新增一行 server tokens off 預設可以設定為cpu的核數相等,併發比較大的時候,可以設定為cpu核數 2 worker cpu affinity 0001 0010 0100 1000 四核worker cpu affinity 00000001 00000010 00...

nginx效能優化

1 執行緒池 預設情況下,nginx的work process按照順序乙個個處理http請求,因此如果後台處理時間較長,則work process會長時間等待io狀態,因此限制併發性。如下所示 所以,對於可能存在的這類http請求,一般會啟用執行緒池。預設情況下,執行緒池特性並不啟用,需要在編譯時增...

Nginx效能優化

簡介 在大多數情況下,乙個常規安裝的nginx對 來說已經能很好地工作了。然而如果想擠壓出nginx的效能,就需要了解哪些指令會影響nginx效能,在本文中將解釋nginx的哪些設定可以微調。需要注意一點,這是乙個簡單的預覽 那些可以通過微調來提高效能設定的概述,不同的環境可能情況不太一樣。對於ng...