nginx开启gzip压缩

作者: deepwinter 分类: 后端 发布时间: 2019-05-24 15:04 点击量: 502 次阅读

开启方式

修改nginx配置文件,在http或者server或者location(作用范围不同,具体加在哪里根据实际情况而定)中加入以下配置:

gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_vary on;

例如:

server {
  listen 443;
  server_name demo.xxx.com; #填写绑定证书的域名
  ssl on;
  root /usr/local/demo;
  index index.html;
  ssl_certificate cert/2245551_demo.xxx.com.pem;
  ssl_certificate_key cert/2245551_demo.xxx.com.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
  ssl_prefer_server_ciphers on;

  gzip on;
  gzip_buffers 32 4K;
  gzip_comp_level 6;
  gzip_min_length 100;
  gzip_types application/javascript text/css text/xml;
  gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
  gzip_vary on;
}

注意:

  • 图片/mp3这样的二进制文件不必压缩,因为压缩率比较小,比如100kb压缩到80kb,而且压缩也是耗费CPU资源的。
  • 比较小的文件不必压缩。

配置项说明

gzip on

这个没的说,打开或关闭gzip。

gzip_buffers

设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页(one memory page)大小以4K为单位(即一个系统中内存页为4K),申请32倍的内存空间。建议此项不设置,使用默认值。

gzip_comp_level

设置gzip压缩级别,级别越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大。

注意:

  • 随着压缩级别的升高,压缩比有所提高,但到了级别6后,很难再提高;
  • 随着压缩级别的升高,处理时间明显变慢;
  • gzip很消耗cpu的性能,高并发情况下cpu达到100%。

建议:

  • 不是压缩级别越高越好,其实gzip_comp_level 1的压缩能力已经够用了,后面级别越高,压缩的比例其实增长不大,反而很吃处理性能。
  • 压缩一定要和静态资源缓存相结合,缓存压缩后的版本,否则每次都压缩高负载下服务器肯定吃不住。

gzip_disable

通过表达式,表明哪些UA头不使用gzip压缩。

gzip_min_length

当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。

gzip_http_version

用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项。默认在http/1.0的协议下不开启gzip压缩。

gzip_proxied

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_modified – 启用压缩,如果header中包含Last_Modified头信息,启用压缩
  • no_etag – 启用压缩,如果header中包含ETag头信息,启用压缩
  • auth – 启用压缩,如果header中包含Authorization头信息,启用压缩
  • any – 无条件压缩所有结果数据

gzip_vary

增加响应头Vary: Accept-Encoding

gzip_types

设置需要压缩的MIME类型,如果不在设置类型范围内的请求不进行压缩。


参考:

  • https://www.cnblogs.com/xzkzzz/p/9224358.html
  • https://blog.csdn.net/php12345679/article/details/80843939

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注