在Nginx的配置文件中可以通过配置gzip来对静态资源进行压缩,相关的指令可以配置在http块、server块和location块中
ngx_http_gzip_module
ngx_http_gzip_static_module
ngx_http_gunzip_module
Gzip模块配置指令
(1) gzip指令:用于开启或关闭gzip功能
语法 | gzip on|off; |
---|---|
默认值 | gzip off; |
位置 | http、server、location |
注意,只有该指令为打开状态,下面的指令才有效果
http {
gzip on;
}
(2) gzip_types指令:该指令可以根据相应页的MIME类型选择性的开启gzip压缩功能
语法 | gzip_types mime-type…; |
---|---|
默认值 | gzip_types text/html; |
位置 | http、server、location |
至于什么类型要进行压缩可以查看表头

http{
gzip_types application/javascript
}
(3) gzip_comp_level指令:用于设置压缩等级,级别从1-9
1表示程度最低;
要是效率最高,9刚好相反,压缩程度高,但效率最低最费时间
语法 | gzip_comp_level level; |
---|---|
默认值 | gzip_comp_level 1; |
位置 | http、server、location |
http{
gzip_comp_level 6;
}
(4) gzip_vary指令:用于设置使用进行压缩发送是是否携带“Vary:Accept-Ecoding”头域的响应头部。是否告诉接收方,所发送的数据经过了gzip压缩处理
语法 | gzip_vary on|off; |
---|---|
默认值 | gzip_vary off; |
位置 | http、server、location |
(5) gzip_buffers指令:用于处理请求压缩的缓冲区数量和大小
语法 | gzip_buffers number size; |
---|---|
默认值 | gzip_buffers 32 4k | 16 8k; |
位置 | http、server、location |
number:指Nginx服务器向系统申请缓存空间个数
size: 指每个缓存空间的大小
这个值的设定一般会和服务器的操作系统有关,所以建议不设置,使用默认值
(6) gzip_disable指令:针对不同种类客户端的请求,可以选择性的开启和关闭gzip功能
语法 | gzip_disbale regex…; |
---|---|
默认值 | – |
位置 | http、server、location |
根据客户端的浏览器标志(user-agent)来设置,支持正则表达式。指定的浏览器标志不使用gzip,该指令一般用来排除一些明显不支持gzip的浏览器。
http{ gzip_disable "MSIE [1-6]\."; }
(7) gzip_http-version指令:针对不同的HTTP协议版本,可以选择性的开启关闭gzip关闭
语法 | gzip_http_version 1.0 |1.1…; |
---|---|
默认值 | gzip_http_version 1.1; |
位置 | http、server、location |
该指令指定一般采用默认值即可
(8) gzip_min_length指令:该指令针对传输数据的大小,可以选择性的开启和关闭gzip功能
语法 | gzip_min_length length; |
---|---|
默认值 | gzip_min_length 20; |
位置 | http、server、location |
可以理解成:满20才会进行压缩
一般设置在1000
(9) gzip_proxied指令:用于设置是否对服务端饭返回的结果进行gzip压缩
Gzip压缩功能的实例配置
gzip on; #开启gzip
gzip_types *; #压缩文件类型,根据具体资源类型设定
gzip_comp_level 6; #gzip压缩级别
gzip_min_length 1025; #进行压缩的最小长度
gzip_buffers 4 16k; #缓存空间大小
gzip_http_version 1.1; #指定压缩响应所需的最低HTTP版本要求
gzip_vary on; #往头信息添加压缩标识
gzip_disable "MSIE [1-6]\.";#对IE6以下版本的不进行压缩
gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件
这些配置在很多地方用的到,所以我们可以将这些内容放在一个配置文件中,然后通过include
指令把配置文件再次加载到nginx.conf
配置文件中。
vim /usr/local/nginx/conf/nginx_gzip.conf
Gzip压缩和sendfile共存的问题
开启sendfile后,可以减少copy的次数,可以不经过用户将静态文件发送出去。
但gzip要想压缩,就必须经过用户
如果解决两个设置的共存问题?
可以使用ngx_http_gzip_static_module
模块的gzip_static
指令来解决
gzip_static指令:检查与访问资源同名的.gz文件时,response中以gzip相关的header返回.gz文件的内容
可以识别.gz后缀的文件
http{ gzip_static on; }
添加模块到Nginx的实现步骤
1.查询当Nginx配置参数
nginx -V
2.备份二进制文件
cd /usr/local/nginx/sbin
mv nginx nginxold
3.进入Nginx安装目录
cd /root/nginx/nginx-1.8.1
4.清空编译内容
make clean
5.使用configure配置参数
./configure --with-http_gzip_static_module
6.make进行编译
make
7.将objs目录下的nginx二进制文件移动到nginx安装目录下的sbin
mv objs/nginx /usr/local/nginx/sbin
8.执行更新命令
make upgrade