Nginx高性能Web服务器值Gzip压缩

410 阅读3分钟

Nginx服务器的Gzip压缩

Nginx服务器通过

  • ngx_http_gzip_module模块:主要负责Gzip功能的开启和设置,对响应数据进行在线实时压缩。
  • ngx_http_gzip_static_module模块:主要负责搜索和发送经过Gzip功能预压缩的数据。
  • ngx_http_gunzip_module模块:针对不支持Gzip压缩数据处理的客户端浏览器,对压缩数据进行解压处理。

而这些模块Nginx是默认开启的。

使用Gzip的意义
可以把js,css,图片等压缩,尽量减少文件的大小,提升响应速度。
比如:在上传图片等静态资源时,对其进行压缩处理,Gzip可以将数据压缩50%以上。
但是使用GZIP会占用比较多的CPU,所以要在CPU空闲的时候使用GZip,并且根据情况设置合理地压缩级别。

Nginx使用Gzip模块:(拿时间换取空间 )

  • 对响应中的数据进行Gzip压缩。
  • 使用的.gz可以是存储在服务器中的文件(所以用户可以手动压缩),也可以实时压缩
  • Nginx服务器作为前端服务器(反向代理、缓存等)如果开启了Gzip压缩功能,后端服务器最好不要开启了。
  • 当结合Squid服务器时,需要开启Nginx服务器ngx_http_gzip_static_module模块,对输出的数据进行静态压缩。

gzip使用环境:http,server,location,if(x),一般把它定义在nginx.conf的http{……}之间

gzip on
on为启用,off为关闭

gzip_min_length 1k
设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。

gzip_buffers 4 16k
获取多少内存用于缓存压缩结果,‘4 16k’表示以16k*4为单位获得

gzip_comp_level 5
gzip压缩比(1~9),越小压缩效果越差,但是越大处理越慢,所以一般取中间值;

gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php
对特定的MIME类型生效,其中'text/html’被系统强制启用

gzip_http_version 1.1
识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码

gzip_vary on
启用应答头"Vary: Accept-Encoding"

#反向代理 响应会进过反向代理服务器
gzip_proxied off   
nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含"Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)

gzip_disable msie6
(IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库

在这里插入图片描述