官方文檔 http://nginx.org/en/docs/
參考鏈接: https://segmentfault.com/a/1190000012672431
參考鏈接: https://segmentfault.com/a/1190000002797601
參考鏈接:http的header https://kb.cnblogs.com/page/92320/
include MIME-Type;
定義nginx能識別的網絡資源媒體類型(如,文本、html、js、css、流媒體等,cat conf/mime.types)
default_type application/octet-stream;
定義默認的type,如果不定義改行,默認為text/plain.
log_format
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 其中main為日志格式的名字,后面的為nginx的內部變量組成的一串字符串。
access_log logs/access.log main;
定義日志的路徑以及采用的日志格式,該參數可以在server配置塊中定義,main指的是上邊定義的日志格式,若不定義,采用系統默認格式。
sendfile on;
是否調用sendfile函數傳輸文件,默認為off,使用sendfile函數傳輸,可以減少user mode和kernel mode的切換,從而提升服務器性能。
對於普通應用設為 on,如果用來進行下載等應用磁盤IO重負載應用,可設置為off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。
sendfile_max_chunk 128k;
該參數限定Nginx worker process每次調用sendfile()函數傳輸數據的最大值,默認值為0,如果設置為0則無限制。配合上邊sendfile 選項一起使用。
tcp_nopush on;
當tcp_nopush設置為on時,會調用tcp_cork方法進行數據傳輸。
使用該方法會產生這樣的效果:當應用程序產生數據時,內核不會立馬封裝包,而是當數據量積累到一定量時才會封裝,然后傳輸。這樣有助於解決網絡堵塞問題。
默認值為on。舉例:快遞員收快遞、發快遞,包裹累積到一定量才會發,節省運輸成本。
keepalive_timeout 65 60;
該參數有兩個值,第一個值設置nginx服務器與客戶端會話結束后仍舊保持連接的最長時間,單位是秒,默認為75s。 第二個值可以省略,它是針對客戶端的瀏覽器來設置的,可以通過curl -I看到header信息中有一項Keep-Alive: timeout=60,如果不設置就沒有這一項。 第二個數值設置后,瀏覽器就會根據這個數值決定何時主動關閉連接,Nginx服務器就不操心了。但有的瀏覽器並不認可該參數。
send_timeout
這個超時時間是發送響應的超時時間,即Nginx服務器向客戶端發送了數據包,但客戶端一直沒有去接收這個數據包。
如果某個連接超過send_timeout定義的超時時間,那么Nginx將會關閉這個連接。
client_max_body_size 10m;
瀏覽器在發送含有較大HTTP包體的請求時,其頭部會有一個Content-Length字段,client_max_body_size是用來限制Content-Length所示值的大小的。 這個限制包體的配置不用等Nginx接收完所有的HTTP包體,就可以告訴用戶請求過大不被接受。會返回413狀態碼。 例如,用戶試圖上傳一個1GB的文件,Nginx在收完包頭后,發現Content-Length超過client_max_body_size定義的值, 就直接發送413(Request Entity Too Large)響應給客戶端。
gzip on;
是否開啟gzip壓縮。
gzip_min_length 1k;
設置允許壓縮的頁面最小字節數,頁面字節數從header頭得content-length中進行獲取。默認值是20。建議設置成大於1k的字節數,小於1k可能會越壓越大。
gzip_buffers 4 16k;
設置系統獲取幾個單位的buffer用於存儲gzip的壓縮結果數據流。4 16k代表分配4個16k的buffer。
gzip_http_version 1.1;
用於識別 http 協議的版本,早期的瀏覽器不支持 Gzip 壓縮,用戶會看到亂碼,所以為了支持前期版本加上了這個選項。 如果你用了Nginx反向代理並期望也啟用Gzip壓縮的話,由於末端通信是http/1.1,故請設置為 1.1。
gzip_comp_level 6;
gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)
gzip_types mime-type ... ;
匹配mime類型進行壓縮,無論是否指定,”text/html”類型總是會被壓縮的。 在conf/mime.conf里查看對應的type。 示例:gzip_types text/plain application/x-javascript text/css text/html application/xml;
gzip_proxied any;
Nginx作為反向代理的時候啟用,決定開啟或者關閉后端服務器返回的結果是否壓縮,匹配的前提是后端服務器必須要返回包含”Via”的 header頭。 以下為可用的值: off - 關閉所有的代理結果數據的壓縮 expired - 啟用壓縮,如果header頭中包含 "Expires" 頭信息 no-cache - 啟用壓縮,如果header頭中包含 "Cache-Control:no-cache" 頭信息 no-store - 啟用壓縮,如果header頭中包含 "Cache-Control:no-store" 頭信息 private - 啟用壓縮,如果header頭中包含 "Cache-Control:private" 頭信息 no_last_modified - 啟用壓縮,如果header頭中不包含 "Last-Modified" 頭信息 no_etag - 啟用壓縮 ,如果header頭中不包含 "ETag" 頭信息 auth - 啟用壓縮 , 如果header頭中包含 "Authorization" 頭信息 any - 無條件啟用壓縮
gzip_vary on;
和http頭有關系,會在響應頭加個 Vary: Accept-Encoding ,可以讓前端的緩存服務器緩存經過gzip壓縮的頁面,例如,用Squid緩存經過Nginx壓縮的數據。
