壓縮響應一般顯著的減小傳輸數據的大小。然而,壓縮發生在運行時,它也會增長至關大的處理開銷對性能有負面的影響。Nginx在發送響應到客戶端時執行壓縮,但不對已經壓縮的響應「二次壓縮」。html
爲了啓用壓縮,設置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;
...
}
有些客戶端不支持gzip編碼方式響應。同時,它能夠存儲壓縮數據,或壓縮動態響應並存儲在緩存中。爲了成功的服務接收或不接收壓縮數據的客戶端,Nginx能動態解壓數據發送給不能接收壓縮數據的客戶端。
爲了啓用運行時解壓,使用gunzip指令。
location /storage/ {
gunzip on;
...
}
gunzip指令和gzip指令能夠用於相同的上下文:
server {
gzip on;
gzip_min_length 1000;
gunzip on;
...
}
注意,這個指令是一個單獨的模塊,默認沒有包括在開源的Nginx構建中。
爲了發送一個壓縮版本的文件給客戶端而不是普通的,設置gzip_static指令爲on。
location / {
gzip_static on;
}
在這種狀況下,服務請求/path/to/file,Nginx嘗試找到併發送文件/path/to/file.gz。若是文件不存在,或客戶端不支持gzip,Nginx發送未壓縮的文件。
注意,gzip_static指令不啓用在線壓縮。它只是使用壓縮工具預先壓縮好文件。爲了在運行時壓縮內容(不只是靜態內容),使用gzip指令。
注意,這個指令是一個單獨的模塊,默認沒有包括在開源的Nginx構建中。