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...