Nginx中gzip_static模块的使用介绍

时间:2021-06-20 19:59:02
在nginx中打开gzip压缩: 
Nginx代码  Nginx中gzip_static模块的使用介绍
  1. gzip  on;  
  2. gzip_min_length  1024;  
  3. gzip_buffers     4 8k;  
  4. gzip_types       text/plain application/x-javascript text/css text/html application/xml;  

一般情况,需要设置一下gzip_min_length的值,建议设置成大于1k的字节数,小于1k可能会越压越大。 即: gzip_min_length 1024 
gzip_types:匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。 

另外nginx还提供了一个static_gzip模块,若要使用它需要在编译的时候把static_gzip模块编译进去: 
./configure --with-http_gzip_static_module 

此模块的作用就是在接到请求后,会到url相同的路径的文件系统去找扩展名为“.gz”的文件 
比如:http://www.iteye.com/stylesheets/homepage.css 
nginx就会先查找 stylesheets/homepage.css.gz 这个文件,如果存在直接把它发送出去,如果不存在,再将stylesheets/homepage.css文件进行gzip压缩,再发送出去,这样可以避免重复的压缩无谓的消耗资源,这个模块不受gzip_types限制,会对所有请求有效。所以建议不要在全局上使用,因为一般来说大部分都是动态请求,是不会有.gz这个文件的,建议只在局部我们确认有.gz的目录中使用。 
Nginx不会自动的将压缩结果写入文件系统,这点不同于lighttpd,所以如果想使用static_gzip模块,需要自己写脚本生成.gz文件。 
而对于Rails3项目来说就很方便了,只需要针对assets目录启用gzip_static模块即可: 
Nginx代码  Nginx中gzip_static模块的使用介绍
  1. location ~ ^/(assets)/  {  
  2.   root /path/to/public;  
  3.   gzip_static on; # to serve pre-gzipped version  
  4.   expires max;  
  5.   add_header Cache-Control public;  
  6. }