nginx優化

文章來源參考:《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/*;

}

相關文章
相關標籤/搜索