nginx的gzip指令介紹,Nginx的gzip指令使用小結(jié)
gzip顧名思義,就是將文件壓縮傳輸。圖片、視頻、大文件不建議使用壓縮,壓縮需要占用你的服務(wù)器資源,壓縮完效果也不大。文章出現(xiàn)很多圖片的話,我建議使用圖床來存放你的圖片。文章給大家介紹nginx的gzip指令。...
簡介
gzip顧名思義,就是將文件壓縮傳輸。圖片、視頻、大文件不建議使用壓縮,壓縮需要占用你的服務(wù)器資源,壓縮完效果也不大。文章出現(xiàn)很多圖片的話,我建議使用圖床來存放你的圖片。文章給大家介紹nginx的gzip指令。
說一段廢話
壓縮響應(yīng)數(shù)據(jù)有什么作用呢?問的好:從用戶體驗和it成本兩方面回答這個問題:
用戶體驗上
網(wǎng)速一定的情況下,傳輸5mb數(shù)據(jù)比傳輸10mb數(shù)據(jù)的時間快了一半。所以傳輸數(shù)據(jù)越小用戶加載頁面就越快,當然相比較之下體驗會更好。
it成本上
對這個場景來說的成本主要是帶寬成本, 數(shù)據(jù)不壓縮那么傳輸這些數(shù)據(jù)相應(yīng)的帶寬肯定更大,對比之下壓縮耗費的CPU資源在帶寬費用上不值一提。
所以你有什么理由不用壓縮呢?
背景
當然nginx也提供了gzip的壓縮方式可以使用,但是在日常的工作中我發(fā)現(xiàn)或多或少在使用上有些問題,有點像:用了但又好像沒用的感覺。 這篇就記錄一下gzip的使用方式和易錯點。
指令介紹
gzip
gzip指令來自 ngx_http_gzip_module 模塊,提供的核心能力就是壓縮響應(yīng)數(shù)據(jù)。
該模塊下提供的指令如下:
gzip on; # 開啟gzip
gzip_comp_level 6; # 壓縮等級:1-9 1:壓縮最快/cpu消耗最少/壓縮率最低 以次類推
gzip_min_length 1000; # 小于此大小的數(shù)據(jù)不壓縮(單位字節(jié)/byte);數(shù)據(jù)來源"content-length"頭
gzip_buffers 32 4k; # 壓縮響應(yīng)的緩沖區(qū)數(shù)量和大小(4k 內(nèi)存頁大小取決于平臺)
gzip_proxied any; # 對代理的請求是否開啟壓縮
gzip_types text/plain application/xml application/javascript application/x-javascript text/css application/json; # 哪些類型的數(shù)據(jù)需要被壓縮
gzip_disable "msie [1-5]\."; # user-agent 被正則匹配到的不開啟壓縮
gzip_vary on; # 當gzip對請求生效時會被添加一個響應(yīng)頭 "vary: accept-encoding"
gzip 是動態(tài)壓縮: 每個請求在被響應(yīng)時都會在gzip邏輯內(nèi)走一遍 tips:
壓縮等級不是越高越好: 壓縮到一定程度后就會吃力不討好, 從js的測試來看性價比最高的級別是 5或6
buffer大小設(shè)置最好是和平臺的內(nèi)存頁保持一致: getconf page_size
gzip_types不要瞎寫: 寫壓縮率大的(css/js/xml/json/ttf), image圖片就不要寫了,壓縮空間太小,又耗cpu
gzip_static
gzip_stati指令來自 ngx_http_gzip_static_module模塊,提供的核心能力是靜態(tài)/預壓縮
該模塊提供的指令如下:
gzip_static on|off|always; # always: 不管客戶端是否支持壓縮我他媽全部給你壓縮之后給你
可以復用gzip_module中以下的指令: tips:
gzip_http_version, gzip_proxied, gzip_disable, gzip_vary
gzip_static是靜態(tài)壓縮:意思是你的服務(wù)端需要同時存在源文件和使用gzip壓縮后的源文件,這時請求的時候會優(yōu)先吧壓縮文件返回,這樣就不用再耗費cpu去動態(tài)壓縮了。(視情況來用,我們沒用)
可以和gzip一同開啟,沒啥影響,它的優(yōu)先級高于gzip
易錯點提示
在實際的生產(chǎn)環(huán)境中架構(gòu)都比較負載,不像一個單純的nginx一樣,我配置好了就萬事大吉了。
時常會遇到有些網(wǎng)站明明配置了gzip但是展示上看并沒有生效,為什么?
此時需要梳理這個請求流程,看看這個請求都經(jīng)過了哪些地方,比如 你的請求通過三次代理(cdn-->nginx-->nginx)那么在其中一層沒有配置或者配置錯誤那么整體的返回數(shù)據(jù)就是沒有被壓縮的, 這種情況出現(xiàn)還是比較多的。
- 詳解nginx服務(wù)器的nginx.conf 中 root目錄設(shè)置問題
- nginx服務(wù)器配置多個虛擬主機vhost的方法示例
- 詳解Nginx 虛擬主機配置的三種方式(基于IP)
- 詳解Nginx 虛擬主機配置的三種方式(基于端口)
- Nginx 虛擬主機配置的三種方式(基于域名)
- Nginx服務(wù)器中accept鎖的機制與實現(xiàn)詳解
- Nginx利用Lua+Redis實現(xiàn)動態(tài)封禁IP的方法
- Linux系統(tǒng)服務(wù)器下Nginx支持ipv6配置的方法
- Nginx單IP地址配置多個SSL證書的方法示例
- 利用nginx和騰訊云免費證書制作https的方法
詳解nginx服務(wù)器的nginx.conf 中 root目錄設(shè)置問題
文章主要介紹了詳解nginx.conf 中 root 目錄設(shè)置問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧...
nginx服務(wù)器配置多個虛擬主機vhost的方法示例
文章主要介紹了nginx配置多個虛擬主機vhost的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧在nginx下配置虛擬主機vhost非常方便。主要...
詳解Nginx 虛擬主機配置的三種方式(基于IP)
Nginx配置虛擬主機支持3種方式主要有基于IP的虛擬主機配置,基于端口的虛擬主機配置,基于域名的虛擬主機配置。本篇文章主要介紹了基于端口的實現(xiàn),感興趣的小伙伴們可以參考一下...
詳解Nginx 虛擬主機配置的三種方式(基于端口)
Nginx配置虛擬主機支持3種方式主要有基于IP的虛擬主機配置,基于端口的虛擬主機配置,基于域名的虛擬主機配置。本篇文章主要介紹了基于端口的實現(xiàn),感興趣的小伙伴們可以參考一下...
Nginx 虛擬主機配置的三種方式(基于域名)
Nginx配置虛擬主機支持3種方式:基于IP的虛擬主機配置,基于端口的虛擬主機配置,基于域名的虛擬主機配置。本文主要介紹了基于域名的實現(xiàn),感興趣的小伙伴們可以參考一下。3、Nginx...
Nginx服務(wù)器中accept鎖的機制與實現(xiàn)詳解
文章主要給大家介紹了關(guān)于Nginx中accept鎖的機制與實現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...
Nginx利用Lua+Redis實現(xiàn)動態(tài)封禁IP的方法
文章主要介紹了Linux系統(tǒng)下Nginx支持ipv6的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧一、查看現(xiàn)有nginx是否支持ipv6需要執(zhí)行以下命令,...
Linux系統(tǒng)服務(wù)器下Nginx支持ipv6配置的方法
文章主要介紹了Linux系統(tǒng)下Nginx支持ipv6的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧一、查看現(xiàn)有nginx是否支持ipv6需要執(zhí)行以下命令,...
Nginx單IP地址配置多個SSL證書的方法示例
文章主要介紹了Nginx單IP地址配置多個SSL證書的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧默認情況下,Nginx一個IP地址僅支持一個SSL...
利用nginx和騰訊云免費證書制作https的方法
文章主要介紹了利用nginx和騰訊云免費證書制作https的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧之前一直在研究,https怎么弄。最近看到...