Nginx的gzip模塊是內(nèi)置的,在http中添加如下配置:
代碼如下:gzip on;
gzip_min_length 5k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 3;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
配置指令詳細(xì)注釋:
gzip on|off
# 默認(rèn)值: gzip off
# 開啟或者關(guān)閉gzip模塊
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的反向代理功能實現(xiàn)只保留gz文件。
# 可以google"nginx gzip_static"了解更多
gzip_comp_level 4
# 默認(rèn)值:1(建議選擇為4)
# gzip壓縮比/壓縮級別,壓縮級別 1-9,級別越高壓縮率越大,當(dāng)然壓縮時間也就越長(傳輸快但比較消耗cpu)。
gzip_buffers 4 16k
# 默認(rèn)值: gzip_buffers 4 4k/8k
# 設(shè)置系統(tǒng)獲取幾個單位的緩存用于存儲gzip的壓縮結(jié)果數(shù)據(jù)流。 例如 4 4k 代表以4k為單位,按照原始數(shù)據(jù)大小以4k為單位的4倍申請內(nèi)存。 4 8k 代表以8k為單位,按照原始數(shù)據(jù)大小以8k為單位的4倍申請內(nèi)存。
# 如果沒有設(shè)置,默認(rèn)值是申請跟原始數(shù)據(jù)相同大小的內(nèi)存空間去存儲gzip壓縮結(jié)果。
gzip_types mime-type [mime-type ...]
# 默認(rèn)值: gzip_types text/html (默認(rèn)不對js/css文件進(jìn)行壓縮)
# 壓縮類型,匹配MIME類型進(jìn)行壓縮
# 不能用通配符 text/*
# (無論是否指定)text/html默認(rèn)已經(jīng)壓縮
# 設(shè)置哪壓縮種文本文件可參考 conf/mime.types
gzip_min_length 1k
# 默認(rèn)值: 0 ,不管頁面多大都壓縮
# 設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭中的Content-Length中進(jìn)行獲取。
# 建議設(shè)置成大于1k的字節(jié)數(shù),小于1k可能會越壓越大。 即: gzip_min_length 1024
gzip_http_version 1.0|1.1
# 默認(rèn)值: gzip_http_version 1.1(就是說對HTTP/1.1協(xié)議的請求才會進(jìn)行g(shù)zip壓縮)
# 識別http的協(xié)議版本。由于早期的一些瀏覽器或者h(yuǎn)ttp客戶端,可能不支持gzip自解壓,用戶就會看到亂碼,所以做一些判斷還是有必要的。
# 注:99.99%的瀏覽器基本上都支持gzip解壓了,所以可以不用設(shè)這個值,保持系統(tǒng)默認(rèn)即可。
# 假設(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壓縮
新聞熱點
疑難解答
圖片精選