nginx服務(wù)器的gzip壓縮配置谢鹊,主要是由ngx_http_gzip_module模塊處理的9個指令實(shí)現(xiàn)的算吩,負(fù)責(zé)Gzip功能的開啟和設(shè)置,對響應(yīng)的數(shù)據(jù)進(jìn)行在線實(shí)時壓縮佃扼。
1. 配置指令詳細(xì)注釋
gzip on|off
開啟或者關(guān)閉gzip功能gzip_buffers 32 4k | 16 8k
默認(rèn)值: gzip_buffers 4 4k/8k
設(shè)置系統(tǒng)獲取幾個單位的緩存用于存儲gzip的壓縮結(jié)果數(shù)據(jù)流偎巢。 例如 4 8k 代表以8k為單位的4倍申請內(nèi)存。gzip_comp_level 4
默認(rèn)值:1(建議選擇為4)
gzip壓縮比/壓縮級別兼耀,壓縮級別 1-9压昼,級別越高壓縮率越大杯聚,當(dāng)然壓縮時間也就越長(比較消耗cpu)癌椿。gzip_types mime-type ...
默認(rèn)值: gzip_types text/html (默認(rèn)不對js/css文件進(jìn)行壓縮)
一般情況下,在壓縮常規(guī)文件時可以設(shè)置為:
gzip_types text/plain application/x-javascript text/css application/xml text/javascript;
注意: 圖片/mp3這樣的二進(jìn)制文件,不必壓縮啊央。因?yàn)閴嚎s率比較小, 比如100->80字節(jié),而且壓縮也是耗費(fèi)CPU資源的拯坟。gzip_min_length 1k
默認(rèn)值: 0 但金,不管頁面多大都壓縮
設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭中的Content-Length中進(jìn)行獲取郁季。建議設(shè)置成大于1k的字節(jié)數(shù)冷溃,小于1k可能會越壓越大。gzip_http_version 1.0|1.1
默認(rèn)值: gzip_http_version 1.1(就是說對HTTP/1.1協(xié)議的請求才會進(jìn)行g(shù)zip壓縮)
注:99.99%的瀏覽器基本上都支持gzip解壓了梦裂。但是假設(shè)我們使用的是默認(rèn)值1.1似枕,如果我們使用了proxy_pass進(jìn)行反向代理,那么nginx和后端的upstream server之間是用HTTP/1.0協(xié)議通信的年柠,如果我們使用nginx通過反向代理做Cache Server菠净,而且前端的nginx沒有開啟gzip,同時彪杉,我們后端的nginx上沒有設(shè)置gzip_http_version為1.0毅往,那么Cache的url將不會進(jìn)行g(shù)zip壓縮gzip_proxied [off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any] ...
默認(rèn)值:off
Nginx作為反向代理的時候啟用,開啟或者關(guān)閉后端服務(wù)器返回的結(jié)果派近,匹配的前提是后端服務(wù)器必須要返回包含"Via"的 header頭攀唯。
off - 關(guān)閉所有的代理結(jié)果數(shù)據(jù)的壓縮
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 | off
開啟時谱轨,將帶著 'Vary: Accept-Encoding'頭域的響應(yīng)頭部戒幔,主要功能是告訴瀏覽器發(fā)送的數(shù)據(jù)經(jīng)過了壓縮處理。開啟后的效果是在響應(yīng)頭部添加了Accept-Encoding: gzip土童,這對于本身不支持Gzip壓縮的瀏覽器是有用的诗茎。gzip_disable "MSIE [1-6]."
禁用IE6的gzip壓縮
針對不同類型的瀏覽器發(fā)起的請求,選擇性地開啟或關(guān)閉Gzip功能献汗,支持使用正則表達(dá)式敢订。gzip_static on|off
nginx對于靜態(tài)文件的處理模塊
該模塊可以讀取預(yù)先壓縮的gz文件王污,這樣可以減少每次請求進(jìn)行g(shù)zip壓縮的CPU資源消耗。該模塊啟用后楚午,nginx首先檢查是否存在請求靜態(tài)文件的gz結(jié)尾的文件昭齐,如果有則直接返回該gz文件內(nèi)容。為了要兼容不支持gzip的瀏覽器矾柜,啟用gzip_static模塊就必須同時保留原始靜態(tài)文件和gz文件阱驾。這樣的話,在有大量靜態(tài)文件的情況下怪蔑,將會大大增加磁盤空間里覆。我們可以利用nginx的反向代理功能實(shí)現(xiàn)只保留gz文件。
2. 使用例子:
gzip on; #開啟gzip功能
gzip_min_length 1024; #響應(yīng)頁面數(shù)據(jù)上限
gzip_buffers 4 16k; #緩存空間大小
gzip_http_version 1.1; #http協(xié)議版本
gzip_comp_level 4; #壓縮級別4
gzip_types text/plain application/x-javascript text/css application/xml text/javascript;
gzip_vary on; #啟用壓縮標(biāo)識
gzip_static on; #開啟文件預(yù)壓縮