由ngx_http_gzip_moudle模块处理的9个指令
- gzip指令
该指令用于开启或者关闭Gzip功能。
gzip on | off;
- gizp_buffers指令
该指令用于设置Gzip压缩文件使用缓存空间的大小。
gzip_buffers number size;
number为服务器向系统申请缓存空间的个数
size 指定每个缓存空间的大小
size值可取系统内存页一页的大小。
- gzip_comp_level指令
用于设定Gzip压缩精度,包括级别一到级别九,级别一表示压缩程度最低,压缩效率最高。
gzip_comp_level level;
- gzip_disable指令
针对不同种类客户端发起的请求,可以选择性的开启或关闭Gzip功能。该指令指定服务器相应这些种类的客户端请求时,不适用Gzip功能缓存响应输出数据。
gzip_disable regex ...;
#regex根据客户端的浏览器标值进行设置
- gzip_http_length指令
该指令用于设置开启Gzip功能的最低HTTP协议版本。
gizp_http_version 1.0|1.1;
- gzip_min_length指令
该指令用于设置页面的字节数,当响应页面的大小大于该值时,才启用Gzip功能。如果压缩很小的数据,可能出现越压缩数据量越大的情况。
gzip_min_length length;
- gzip_proxied指令
主要用于设置Nginx服务器是否对后端服务器返回的结果进行Gzip压缩。只有在使用反向代理时有效。
gzip_proxied off|expired|no-cache|no-store|private|no_last_modified|no|etag|auth|any ...;
- gzip_types指令
设置MIME类型,被设置的类型将被压缩。
gzip_types mime-type ...;
- gzip_vary指令
该指令用于设置在使用Gzip功能时是否发送带有“Vary:Accept-Encoding”头域的响应头部。其主要功能是告诉接受方发送的数据经过了压缩处理。
gzip_vary on | off;
由ngx_http_gzip_static_moudule模块处理的指令(可选的HTTP模块)
该模块主要负责搜索和发送经过Gzip功能预压缩的数据,这些数据以”.gz“结尾。注意该模块使用静态压缩,在Http的响应头部包含content-Length头域来指明报文体的长度。
- gzip_static指令
用于开启或关闭该模块。
gzip_static on | off | always;
always一直发送Gzip预压缩文件,而不检查客户端浏览器是否支持Gzip压缩。
其他指令同上,需要注意的是gzip_proxied指令
gzip_proxied expired no-cache no-store private auth;
另外,gzip_wary指令,只给未压缩的数据在HTTP响应头部添加”Vary:Accept-Encoding“头域。
也可用下面的指令来代替:
add_header Vary Accept-Encoding gzip;
ngx_http_gunzip_module模块(可选HTTP模块)
该模块主要用来针对不支持Gzip压缩数据处理的客户端浏览器,对压缩数据进行解压处理。
- gunzip指令
该指令用于开启或关闭该模块的功能。
gunzip_static on | off;
- gunzip_buffers指令
用于设置服务器解压Gzip文件使用缓存空间的大小。
gunzip_buffers number size;
Gzip压缩功能的使用
- Gzip压缩功能综合配置实例
user www-data;
worker_processes 3;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
events {
use epoll;
worker_connections 1024;
}
http {
include /etc/nginx/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_vary on;#启用压缩标识
gzip_proxied any;#无条件启用对后端服务器响应数据的Gzip压缩
gzip_comp_level 2;#压缩级别为2
gzip_buffers 4 16k;#缓存空间大小
gzip_http_version 1.1;#默认使用1.1版本客户端使用1.1及以上的HTTP协议使用Gzip功能。
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;#压缩源文件类型
gunzip_static on;#检查预压缩文件
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server{
listen 8081;
server_name myServer;
error_page 404 /404.html;
location /setver/location{
root /usr/share/nginx/html;
index index1.html;
}
}
}
- gzip压缩功能与IE6历览器运行脚本兼容而问题
使用IE6及以下浏览器时,建议不要使用Gzip压缩功能
gzip_disable "MSIE[1-6]\."
- Nginx与其他服务器交互时产生的Gzip压缩功能相关问题
第一类:对于包含多层服务器的系统来说,Nginx服务器作为前端服务器如果开启了Gzip压缩功能,后端服务器就不要开启了,否则会导致客户端浏览器在刷新过程中数据下载不完全的问题发生。
第二类:Nginx服务器作为后端服务器和前端服务器进行交互,两类服务器对Gzip压缩功能支持不同导致问题。