nginx學習之壓縮解壓篇(七)


1.簡介

壓縮響應可以減少傳輸數據的大小,節省帶寬。但過多的壓縮會造成很大的處理開銷。在發送給客戶端之前,nginx會對響應做壓縮,但是如果后端服務器已經

壓縮過了,nginx就不再壓縮。

 

2.開啟壓縮

 

server {
    gzip on;
    gzip_types      text/plain application/xml;
    gzip_proxied    no-cache no-store private expired auth;
    gzip_min_length 1000;
    ...
}

 

nginx默認只壓縮MIME類型為text/plain的響應,使用gzip_types指定額外的壓縮類型。

gzip_min_length:nginx會檢查響應頭中的Content-length,如果大於1000字節,就壓縮,如果小於1000字節,就不壓縮。

gzip_proxied:假如用戶與nginx之間隔了一層代理服務器(用戶的代理服務器),代理服務器發送請求到nginx,nginx將請求轉發給后端服務器,后端服務器接收到響應后,不對響應做壓縮,直接返回給代理服務器。通過gzip_proxied指令來配置如何對這種響應做壓縮。

 

用戶-----代理服務器----------nginx-----后端服務器

我們是根據請求中的Via頭字段知道這個請求是來自代理服務器的。

gzip_proxied有多個參數,用於聲明哪些類型的請求對應的響應需要壓縮。

上面的例子中表示:

如果響應中的Cache-Control字段的值為:no-cache,no-store,private,就壓縮這個響應,因為它不會緩存在用戶的代理服務器上。

expired參數表示nginx會去檢查響應中的Expired頭字段。

auth參數表示nginx會去檢查響應中的Authorization頭字段。一個經過授權的響應是不能在代理服務器上緩存的,必須給終端用戶。

 

配置壓縮的指令可以寫在http塊中,可以寫在server塊中,可以寫在location塊中。

 

3.開啟解壓縮

由於有的客戶端可以識別壓縮的響應,有的客戶端無法識別壓縮的響應,所以就需要分別對待。

 

開啟運行時解壓縮,也就是在傳輸前進行壓縮,在發送的過程中進行解壓縮?

 

location /storage/ {
    gunzip on;
    ...
}

 

注意:解壓縮指令在預編譯的開源的nginx中沒有,它屬於一個單獨的模塊,需要編譯到nginx中去。

 

4.盡量發送壓縮過的靜態文件

location / {
    gzip_static on;
}

 

對於請求/path/to/file,nginx會嘗試先尋找/path/to/file.gz,找到后就發送出去,如果沒有找到,或者客戶端不支持gzip,那么就只能發送

/path/to/file了。

gzip_static的意思是提前壓縮好靜態文件。

注意:解壓縮指令在預編譯的開源的nginx中沒有,它屬於一個單獨的模塊,需要編譯到nginx中去。


免責聲明!

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



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