文章來源參考:《nginx從入門到精通》javascript
修改nginx主配置文件nginx.confcss
高層配置:html
在nginx.conf文件中,少數幾個高級配置在模塊部分之上java
如下是配置文件中選項:node
user nginx;nginx
pid /var/run/nginx.pid;web
worker_processes auto;json
worker_rlimit_nofile 100000;緩存
worker_processes 定義了nginx對外提供web服務時的worker進程數,最優值取決於許多因素,包括(不限於)CPU核數量,存儲數據的硬盤數量及負載模式,不肯定時,將其設置爲可用的CPU內核數,(設置爲「auto」將嘗試自動檢測)。安全
worker_rlimit_nofile 更改worker進程的最大打開文件數限制,若無設置,此值爲操做系統的限制,設置後操做系統和nginx能夠處理比ulimit -a更多的文件,此值設置高點,nginx不會出現「too many open files」問題。(系統默認打開文件數爲1024,使用ulimit -n命令查看的結果數值)。
events模塊:
events模塊中包含nginx中全部處理鏈接的設置:
events {
worker_connection 2048;
multi_accept on;
}
worker_connections 設置可由一個worker進程同時打開的最大鏈接數,若是設置了上面提到的work_rlimit_nofile,能夠將此值設置很高。
最大客戶數也由系統的可用socket鏈接數限制,因此設置超出實際的高沒有好處。
multi_accept 讓nginx收到一個新鏈接通知後接受盡量多的鏈接。
http模塊:
http模塊控制nginx http處理的全部核心特性。
http {
server_tokens off; #關閉在錯誤頁面中的nginx版本數字信息,提升安全性。
sendfile on; #sendfile讓sendfil()發揮做用,sendfile()能夠在磁盤和TCP socket之間相互拷貝數據。
tcp_nopush on; #讓nginx在一個數據包裏發送全部頭文件,而不是一個一個的發送
tcp_nodelay on; #讓nginx不要緩存數據,而是一段一段的發送,當須要及時發送數據時,設置此值,發送一小塊數據信息就不能馬上獲得返回值。
access_log off; #設置nginx是否將存儲訪問日誌,關閉此選項讓讀取磁盤io操做更快
error_log /var/log/nginx/error.log crit; #nginx只記錄嚴重的錯誤
keepalive_timeout 10; #給客戶端分配keepalive連接超時時間,服務器將在此超時時間事後關閉連接,能夠設置低些,讓nginx持續工做時間更長。
client_header_timeout 10; #設置請求頭的超時時間
client_body_timeout 10; #設置請求體的超時時間
reset_timeout_connection on; #nginx 關閉不相應的客戶端鏈接,將會釋放那個客戶端所佔有的內存空間。
send_timeout 10; #指定客戶端的相應超時時間,此設置不會用於整個轉發器,而是在兩次客戶端讀取操做之間,若是在此時間段內,客戶端沒有讀取任何數據,nginx就會關閉連接。
limit_conn_zone $binary_remote_addr zone=addr:5m; #用於保護各類key(如當前鏈接數)的共享內存的參數,5M就是5字節,這個值應該被設置的足夠大以存儲(32K*5)32byte狀態或者(16K*5)64byte狀態。
limit_conn addr 100; #爲給定的key設置最大鏈接數,此處key是addr,設置爲100,即每一個ip地址最多同時打開100個鏈接。
include /etc/nginx/mime.types; #include只是一個在當前文件中包含另外一個文件內容的指令,這裏使用它來加載稍後會被用到的一系列的mime類型,
default_type text/html; #default_type設置文件使用默認的mime-type
charset UTF-8; #設置頭文件中的默認的字符集
gzip on; #採用gzip壓縮的形式發送數據,將會減小發送的數據量
#gzip_static on; #在nginx壓縮資源以前,先查找是否有預先gzip處理過的資源,要求預先壓縮你的文件,從而容許使用最高壓縮比,這樣nginx不用再壓縮這些文件。
gzip_proxied any; #容許或禁止壓縮基於請求和相應的相應流,設置爲any,意味着將會壓縮全部請求。
gzip_min_length 1000; #設置對數據啓用壓縮的最少字節數。若一個請求小於1000字節,最好不要壓縮,由於壓縮這些小的數據會下降處理此請求的全部進程的速度。
gzip_comp_level 4; #設置數據壓縮等級,能夠是1-9之間任意數字,9是最慢但壓縮比最大。
gzip_type text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; #設置須要壓縮的數據格式。
#cache information about file descriptors,frequently accessed files
#can boost performance ,but you need to test those values
open_file_cache max=100000 inactive=20s; #活動超過20秒open_file_cache打開緩存的同時指定緩存最大數目,以及緩存的時間,能夠設置一個相對高的最大時間,能夠在不後清除掉。
open_file_cache_valid 30s; #指定檢測正確信息的間隔時間
open_file_cache_min_uses 2; #定義了open_file_cache中指令參數不活動時間期間裏最小的文件數
open_file_cache_errors on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}