nginx.conf 配置解析之 http配置


官方文檔 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壓縮的數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM