Node.js站点使用Nginx作反向代理时配置GZip压缩的教程
node.js开发的站点,如果你也是用了nginx实现反向代理.
那么在服务端可以轻松实现gzip压缩,让站点浏览更顺畅.
前提条件:node.js+nginx反向代理.
node.js需要做的工作:
express4.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放在上面.
express4.0以上版本(包含4.0)
varcompress=require('compression'); app.use(compress());
4.0以上版本把中间件独立拿出来了.
所以首先需要你rquire('compression')
点击这里查看express3.5和express4.0的主要区别
node.js需要做的工作就是这么简单.
nginx需要做的工作:
打开nginx配置文件,修改配置,开启gzip开关
nano/usr/local/nginx/conf/nginx.conf
你自己服务器上的nginx不一定安装在/usr/local/目录下,所以根据自己安装目录下查找配置文件nginx.conf
在http配置节点上加如下配置:
gzipon; gzip_min_length1k; gzip_buffers416k; gzip_http_version1.0; gzip_comp_level2; gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml; gzip_varyon; http( //放上面配置节点 )
每一个配置项表示什么含义呢?
1)gzip
语法:gzipon/off
默认值:off
作用域:http,server,location
说明:开启或者关闭gzip模块,这里使用on表示启动
2)gzip_min_length
语法:gzip_min_lengthlength
默认值:gzip_min_length0
作用域:http,server,location
说明:设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。|
3)gzip_buffers
语法:gzip_buffersnumbersize
默认值:gzip_buffers44k/8k
作用域:http,server,location
说明:设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。416k代表以16k为单位,按照原始数据大小以16k为单位的4倍申请内存。
4)gzip_comp_level
语法:gzip_comp_level1..9
默认值:gzip_comp_level1
作用域:http,server,location
说明:gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理最慢(传输快但比较消耗cpu)。这里设置为5。
5)gzip_types
语法:gzip_typesmime-type[mime-type...]
默认值:gzip_typestext/html
作用域:http,server,location
说明:匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。这里设置为application/x-javascripttext/cssapplication/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.1200OK Server:nginx Date:Thu,08Mar201207:23:46GMT Content-Type:text/html Connection:close Content-Encoding:gzip
$curl-I-H"Accept-Encoding:gzip,deflate""http://localhost/style.css"
HTTP/1.1200OK Server:nginx Date:Thu,08Mar201207:23:54GMT Content-Type:text/css Connection:close Last-Modified:Tue,27Dec201110:00:51GMT ETag:"BC612352322D435769C4BDC03DDB2572" Content-Length:22834
可以看出来了把。第二个示例没有被压缩。