怎么使用Nginx作反向代理配置GZip壓縮

前提條件: node.js + nginx 反向代理.

node.js 需要做的工作:

express 4.0以下版本:

app.use(express.compress());?//主要是這句 app.use(express.json());? app.use(express.urlencoded());? app.use(express.bodyparser());? app.use(express.methodoverride());? app.use(express.cookieparser());

為了讓所有請求壓縮,所以 compress 放在上面.

express 4.0以上版本(包含4.0)

var?compress?=?require('compression'); app.use(compress());

4.0以上版本把中間件獨立拿出來了.

所以首先需要你 rquire(‘compression’)

點擊這里查看express 3.5 和 express 4.0 的主要區別

node.js 需要做的工作就是這么簡單.

nginx 需要做的工作:

打開nginx配置文件,修改配置,開啟 gzip 開關

nano?/usr/local/nginx/conf/nginx.conf

你自己服務器上的 nginx 不一定安裝在 /usr/local/ 目錄下,所以根據自己安裝目錄下查找 配置文件 nginx.conf

在 http 配置節點上加如下配置:

gzip?on; ????gzip_min_length?1k; ????gzip_buffers???4?16k; ????gzip_http_version?1.0; ????gzip_comp_level?2; ????gzip_types????text/plain?application/x-javascript?text/css?application/xml; ????gzip_vary?on;  http?( ????//放上面配置節點?? )

每一個配置項表示什么含義呢?

1) gzip

語法:gzip on/off

默認值:off

作用域:http, server, location

說明:開啟或者關閉 gzip 模塊,這里使用 on 表示啟動

2) gzip_min_length

語法:gzip_min_length length

默認值:gzip_min_length 0

作用域:http, server, location

說明:設置允許壓縮的頁面最小字節數,頁面字節數從header頭中的content-length中進行獲取。默認值是0,不管頁面多大都壓縮。建議設置成大于1k的字節數,小于1k可能會越壓越大。|

3) gzip_buffers

語法: gzip_buffers number size

默認值: gzip_buffers 4 4k/8k

作用域: http, server, location

說明:設置系統獲取幾個單位的緩存用于存儲gzip的壓縮結果數據流。4 16k 代表以 16k 為單位,按照原始數據大小以 16k 為單位的4倍申請內存。

4) gzip_comp_level

語法: gzip_comp_level 1..9

默認值: gzip_comp_level 1

作用域: http, server, location

說明:gzip壓縮比,1 壓縮比最小處理速度最快,9 壓縮比最大但處理最慢(傳輸快但比較消耗cpu)。這里設置為 5。

5) gzip_types

語法: gzip_types mime-type [mime-type …]

默認值: gzip_types text/html

作用域: http, server, location

說明:匹配mime類型進行壓縮,(無論是否指定)”text/html” 類型總是會被壓縮的。這里設置為 application/x-javascript text/css application/xml。

常用的靜態 type 有,看自己需要壓縮的情況而定:

text/html text/plain text/css application/x-javascript text/javascript application/xml

ok,到這里基本服務端已經配置完畢,nginx 只需要 reload 一下即可。

下面來測試一下,用 curl 來如何測試服務端已經開啟 gzip(測試條件是默認gzip_types,即只壓縮 text.html ,其他 type 未壓縮):

查看是否開啟gzip,需要客戶端加入:”accept-encoding: gzip, deflate” 頭信息。

$?curl?-i?-h?"accept-encoding:?gzip,?deflate"?"http://localhost/tag.php"
http/1.1?200?ok server:?nginx date:?thu,?08?mar?2012?07:23:46?gmt content-type:?text/html connection:?close content-encoding:?gzip
$?curl?-i?-h?"accept-encoding:?gzip,?deflate"?"http://localhost/style.css"
http/1.1?200?ok server:?nginx date:?thu,?08?mar?2012?07:23:54?gmt content-type:?text/css connection:?close last-modified:?tue,?27?dec?2011?10:00:51?gmt etag:?"bc612352322d435769c4bdc03ddb2572" content-length:?22834

可以看出來了把。第二個示例沒有被壓縮。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享