nginx的詳細使用說明(中)

在詳細使用說明上裏,對nginx的一個部分已經進行了說明。這節開始解析http部分。 php

在當前個人nginx.conf的配置以下: html


 

能夠看到配置項仍是很是多的(這是LNMP包自動默認的配置選項)。 前端

1.Include   mime.types   這是nginx加載當前的一個mime.types類型打開,能夠看到該文件對應的是 java

 


 

這裏大體說明下mime.types的概念:主要是接收到一個對應後綴的文件後,本地瀏覽器會根據對應的文件類型按照特定的格式進行解析(這樣咱們才能把文件和聲音按照正確的格式在瀏覽器前面顯示出來,例如Content-type: text/html 這是告訴瀏覽器該文本是html文件,請按照html文件進行解析)這個配置會讓nginx根據不一樣的文件後綴賦予不一樣的文件頭。(若是你本身製造了一種文件後綴,又沒有在這裏進行說明,前端就沒法識別類型,從而可能出現沒法加載的狀況) nginx

2.default_type  默認類型mime設置(當出現沒法識別的後綴名的時候,會告訴瀏覽器是該類型) 這裏application/octet-stream  這表明任意的二進制數據傳輸。  算法

告訴瀏覽器,當默認沒有設定mime.types的時候,用二進制數據傳輸格式進行傳遞 後端

3. 瀏覽器

  配置多個虛擬機server的時候,這個是必須填的。不然會啓動失敗(默認狀況下是沒有該配置的) 緩存

該功能說明:保存服務器名字的hash表(hash表就是服務器的惟一識別標記,用空間換取時間的時候進行使用,可讓系統最快速的找到對應的訪問的服務器) 服務器

server_names_hash_max_size 和 server_names_hash_bucket_size倆個參數是用來決定域名名字的hash大小參數

4.

  客戶端header頭部緩存大小限定(在http通信的時候,文檔以前都有一個header的,能夠用這個參數來控制對客戶端頭部信息的輸出)

   這幾個參數的做用順序是,會優先分配一個內存給一個主機,若是發現不夠用,就會分配large_client_header_buffers 的數值。主要是用來避免沒必要要的內存浪費。若是再次超過了最大的設置,直接報錯 414。另外該參數是能夠在server的配置裏面進行覆蓋掉外部的默認設置的。Client_max_body_size 限制輸出長度的,這個比較容易理解。

5.sendfile on; #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對於普通應用設爲 on,若是用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,下降系統的負載。注意:若是圖片顯示不正常把這個改爲off

6.Tcp_nopush;

  防止網絡阻塞使用:表示達到最大值後,一次性發送輸出去(對於大網頁文件特別須要到了最大的負荷後發出去,頻繁的發出數據容易引發網絡阻塞,該參數默認是開啓的)

7.

  該參數的配置有點抽象,在tcp協議裏,TCP_NODELAYTCP_CORK基本上控制了包的「Nagle化」,TCP_NODELAY.Nagle化在這裏的含義是採用Nagle算法把較小的包組裝爲更大的幀。(不然對每一個很是小的響應都會自帶一個數據包造成網絡阻塞,關閉後能夠更快的進行響應)

8.

  客戶端的鏈接時間 這個是比較容易理解的。

9.

  由於傳統的cgi有太多漏洞,nginx對其是不支持的,因此默認狀況下,nginx都是採用fastcgi的模式進行訪問。而php5.0之後內置了fastcgiserver裏面會引入對應執行php,這裏默認fastcgi的運行支持

  fastcgi_connect_timeout=300; #鏈接到後端fastcgi超時時間

fastcgi_send_timeout=300; #fastcgi請求超時時間(這個指定值已經完成兩次握手後向fastcgi傳送請求的超時時間)

fastcgi_rend_timeout=300; #接收fastcgi應答超時時間,同理也是2次握手後

fastcgi_buffer_size=64k; #讀取fastcgi應答第一部分須要多大緩衝區,該值表示使用164kb的緩衝區讀取應答第一部分(應答頭).

fastcgi_buffers 4 64k;#指定本地須要多少和多大的緩衝區來緩衝fastcgi應答請求,假設一個phpjava腳本所產生頁面大小爲256kb,那麼會爲其分配464kb的緩衝來緩存;若頁面大於256kb,那麼大於的256kb的部分會緩存到fastcgi_temp指定路徑中,這並不是是個好辦法,內存數據處理快於硬盤,通常該值應該爲站點中php/java腳本所產生頁面大小中間值,若是站點大部分腳本所產生的頁面大小爲256kb,那麼可把值設置爲16 16k,4 64k

fastcgi_busy_buffers_size 128k; #默認值是fastcgi_buffer2

fastcgi_temp_file_write_size 128k;#寫入緩存文件使用多大的數據塊,默認值是fastcgi_buffer2

10.gzip模塊一部分解釋


gzip on|off

默認值: gzip off

開啓或者關閉gzip模塊 

gzip_min_length  1k

默認值: 0 ,無論頁面多大都壓縮

設置容許壓縮的頁面最小字節數,頁面字節數從header頭中的Content-Length中進行獲取。

建議設置成大於1k的字節數,小於1k可能會越壓越大。 即: gzip_min_length 1024 

gzip_buffers 4 16k

默認值: gzip_buffers 4 4k/8k

設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流。 例如 4 4k 表明以4k爲單位,按照原始數據大小以4k爲單位的4倍申請內存。 4 8k 表明以8k爲單位,按照原始數據大小以8k爲單位的4倍申請內存。

若是沒有設置,默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果。 

gzip_http_version 1.0|1.1

默認值: gzip_http_version 1.1(就是說對HTTP/1.1協議的請求才會進行gzip壓縮)

識別http的協議版本。因爲早期的一些瀏覽器或者http客戶端,可能不支持gzip自解壓,用戶就會看到亂碼,因此作一些判斷仍是有必要的。

注:99.99%的瀏覽器基本上都支持gzip解壓了,因此能夠不用設這個值,保持系統默認便可。

假設咱們使用的是默認值1.1,若是咱們使用了proxy_pass進行反向代理,那麼nginx和後端的upstream server之間是用HTTP/1.0協議通訊的,若是咱們使用nginx經過反向代理作Cache Server,並且前端的nginx沒有開啓gzip,同時,咱們後端的nginx上沒有設置gzip_http_version1.0,那麼Cacheurl將不會進行gzip壓縮

相關文章
相關標籤/搜索