Nginx服务器的Gzip压缩

由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压缩功能支持不同导致问题。
上一篇:vue cli3/vue cli4开启gzip打包报错:TypeError: Cannot read property 'tapPromise' of undefined


下一篇:Nginx安装并启用gzip模块