Nginx壓縮和解壓

1    介紹

壓縮響應一般顯著的減小傳輸數據的大小。然而,壓縮發生在運行時,它也會增長至關大的處理開銷對性能有負面的影響。Nginx在發送響應到客戶端時執行壓縮,但不對已經壓縮的響應「二次壓縮」。html

2    啓用壓縮

爲了啓用壓縮,設置gzip指令爲on:緩存

gzip on;服務器

 默認,Nginx只壓縮MIME爲text/html類型的響應。爲了壓縮其它MIME類型的響應,須要設置gzip_types指令。併發

gzip_types text/plain application/xml;app

 使用gzip_min_length指令指定響應進行壓縮的最小長度。默認是20字節(下面調整爲1000字節)。工具

gzip_min_length 1000;性能

 默認,Nginx不壓縮給代理請求的響應(請求來自代理服務器)。請求來自代理服務器是經過請求的Via頭字段決定。爲了配置這些響應的壓縮,使用gzip_proxied指令。指令有大量參數指定Nginx應該壓縮那些種類的代理請求。例如,只有請求不緩存在代理服務器壓縮響應纔是合理的。因爲這個目的gzip_proxied指令有參數指示Nginx檢查Cache-Control頭字段在響應,若是值是no-cache、no-store或private壓縮響應。此外,你必須指定expired參數檢查Expires頭字段。一樣適用auth參數檢查Authorization頭字段:編碼

gzip_proxied no-cache no-store private expired auth;spa

 

和大多數其它指令同樣,壓縮指令能包括在http上下文或server或location配置塊。代理

gzip的整體配置以下所示:

server {

    gzip on;

    gzip_types      text/plain application/xml;

    gzip_proxied    no-cache no-store private expired auth;

    gzip_min_length 1000;

    ...

}

 3    啓用解壓

有些客戶端不支持gzip編碼方式響應。同時,它能夠存儲壓縮數據,或壓縮動態響應並存儲在緩存中。爲了成功的服務接收或不接收壓縮數據的客戶端,Nginx能動態解壓數據發送給不能接收壓縮數據的客戶端。

爲了啓用運行時解壓,使用gunzip指令。

location /storage/ {

    gunzip on;

    ...

}

 gunzip指令和gzip指令能夠用於相同的上下文:

server {

    gzip on;

    gzip_min_length 1000;

    gunzip on;

    ...

}

 注意,這個指令是一個單獨的模塊,默認沒有包括在開源的Nginx構建中。

4    發送壓縮文件

爲了發送一個壓縮版本的文件給客戶端而不是普通的,設置gzip_static指令爲on。

location / {

    gzip_static on;

}

 

在這種狀況下,服務請求/path/to/file,Nginx嘗試找到併發送文件/path/to/file.gz。若是文件不存在,或客戶端不支持gzip,Nginx發送未壓縮的文件。

注意,gzip_static指令不啓用在線壓縮。它只是使用壓縮工具預先壓縮好文件。爲了在運行時壓縮內容(不只是靜態內容),使用gzip指令。

注意,這個指令是一個單獨的模塊,默認沒有包括在開源的Nginx構建中。

相關文章
相關標籤/搜索