概述:这个配置压缩文件,可以在http块、server块或者location块中设置,Nginx服务器ngx_http_gzip_module模块、ngx_http_gzip_static_module模块和ngx_http_gunzip_module对指令进行解析
本章涉及内容:
Gzip 各模块支持的配置指令
Gzip压缩功能的使用
Gzip压缩功能常见问题的解决
5.1、由ngx_http_gzip_module模块处理的9个指令
1.gzip指令
gzip on | off (开启或关闭Gzip功能)
2.gzip_buffers 指令
gzip_buffers number size (设置Gzip压缩文件使用缓存空间的大小)
number,指定Nginx服务器需要向系统申请缓存空间的个数
size 指定每个缓存空间的大小
gzip_buffers 32 4k | 16 8k;
3.gzip_comp_level指令
设置压缩程度,1到9,级别1表示压缩最低,压缩效率高。9刚好相反
gzip_comp_level level; 默认值为1
4、gzip_disable指令
对不同客户端执行压缩功能(不同浏览器)
gzip_disable regex ...; (根据客户端浏览器标志(User_Agent UA)进行设置,支持正则表达式)
例如: gzip_disable MSIE [4-6]\.
5、gzip_http_version指令
http版本协议不兼容
gzip_http_version 1.0|1.1 (默认值1.1)
6、gzip_min_length指令
文件多大才进行压缩。头部必须要Content-Length字段
gzip_min_length length; (默认值20,如果设置0,所有文件都压缩)
为防止出现数据越压越大的情况
gzip_min_length 1024;
7、gzip_proxied指令
用于设置Nginx服务器是否对后端服务器返回的结果进行Gzip压缩。
gzip_proxied off | expired | no-cache| no-store | private | no_last_modified | no-etag | auth | any ...;
off.关闭Nginx服务器对后端服务器返回的结果的Gzip压缩,这是默认值
expired 当后端服务器响应页头部包含用于指定响数据过期时间的expired头域时,启用对响应数据进行Gzip压缩
no-store当后端服务器响应页头部包含用于通知所有缓存机制是否缓存的Cache-Control头域、其其指令值为no-store时,启用对响应数据的Gzip压缩
no-cache 当后端服务器响应页头部包含用于通知所有缓存机制是否缓存的Cache-Control头域、其其指令值为no-cache时,启用对响应数据的Gzip压缩
private 当后端服务器响应页头部包含用于通知所有缓存机制是否缓存的Cache-Control头域、其其指令值为private时,启用对响应数据的Gzip压缩
no_last_modified 当后端服务器响应页头部不包含用于指明需要获取数据最后修改时间的Last-Modified头域时,启用对响应数据的Gzip压缩。
no_etag 当后端服务器响应页头部不包含用于标识被请求变量的实体值的ETag头域时,启用对响应数据的Gzip压缩。
auth 当后端服务器响应页头部包含用于标示HTTP授权证书的Authorization头域时,启用对响应数据的Gzip压缩
any, 无条件启用对后端服务器响应数据的Gzip压缩
8.gzip_types指令
是否带有"Vary: Accept-Encoding" 头域的响应头部,最后会在响应头增加 Accept-Enconding :gzip
默认值off
gzip_vary on | off
另一种方式
add_header Vary Accept-Enconding gzip;
5.2、由ngx_http_gzip_static_module模块处理指令
该模块主要负责搜素和发送经过Gzip功能压缩的数据
gzip_static on | off | always;
on. 开启该模块功能
off, 关闭该模块的功能
always 一直发送Gzip预压缩文件,而不检查客户端浏览器是否支持Gzip压缩
gzip_proxied 指令只接收以下设置
gzip_proxied expired no-cache no-store private auth;
这个模块是可选模块,需要在Ngxin程序配置时添加--with-http_gzip_static_module指令
5.3、由ngx_http_gunzip_module模块处理的2个指令
Nginx服务器支持响应输出数据流进行Gzip压缩。主要用来不支持Gzip压缩数据处理的客户端浏览器,对压缩数据进行解压处理的。
1.gunzip指令
开启或关闭功能
gunzip_static on | off;
on 开启功能
off 关闭功能
2.gunzip_buffers 指令
设置缓存大小
gunzip_buffers number size
number 指定Nginx服务器需要向系统申请缓存空间的个数
size 指定每个缓存空间的大小
gunzip_buffers 32 4k | 16 8k
这是可选模块,需要Nginx 程序配置添加--with-http_gunzip_module指令。
5.4、Gzip压缩功能的使用
5.4.1、Gzip压缩功能综合配置实例
user nobody nobody;
worker_processes 3;
error_log logs/error.log;
pid nginx.pid;
events
{
use epoll;
worker_connections 1024;
}
http{
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format access.log '$remote_addr-[$time_local]-"$request"-"$http_user_agent"';
gzip on ; #开启gzip功能
gzip_min_length 1024; # 响应页面数据上限
gzip_buffers 4 16k; #缓存空间大小
gzip_comp_level 2; #压缩级别为2
gzip_types text/plain application/x-javascript text/css application/xml; #压缩源文件类型
gzip_vary on; #启用压缩标识
gunzip_static on; #检查预压缩文件
server{
listen 8081;
server_name myServer1;
access_log /myweb/server1/log/access.log;
error_page 404 /404.html;
location /server1/location1{
root /myweb;
index index.svr1-locl.htm;
}
location /server1/location2 {
root /myweb;
index index.svr1-loc2.htm;
}
}
server {
listen 8082;
server_name 192.168.1.3;
access_log /myweb/server2/log/access.log;
error_page 404 /404.html;
location /server2/location1{
root /myweb;
index index.svr2-locl.htm;
}
location /svr2/loc2 {
alias /myweb/server2/location2/;
index index.svr2-loc2.htm;
}
location = /404.html {
root /myweb;
index 404.html;
}
}
}
5.4.2 Nginx与其他服务器交互产生的Gzip压缩功能相关问题
多层服务器的系统来说,Nginx服务器作为前端服务器如果开启了Gzip压缩功能,后端服务器最好就不要在开启,否则会导致客户端浏览器在刷新过程中数据下载不完整的问题发生。