侧边栏壁纸
博主头像
与晚风述往事博主等级

万般皆下品,唯有读书高。

  • 累计撰写 149 篇文章
  • 累计创建 29 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Nginx ngx_http_gzip_module模块的使用

与晚风述往事
2021-10-25 / 0 评论 / 0 点赞 / 211 阅读 / 2,122 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-10-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

ngx_http_gzip_module模块通过“gzip”方法来压缩响应(responses),减小数据传输的大小。传输过程中的数据减少了,使用的IO自然就会降低,性能上也会有提升。

注意,官网上介绍,在使用了SSL/TLS协议后,压缩响应(responses)可能会受到BREACH攻击。

指令

各位看到指令可能会有点陌生,就简单的把它理解为参数就行了。这些指令定义了gzip压缩响应的前提、参数等。

解下来简单叙述一下ngx_http_gzip_module模块的指令及用法。

gzip

语法gzip parameter;
默认值off
可选值on、off

gzip指令定义是否压缩响应(response)。

gzip_buffers

语法gzip_buffers number size;
默认值32 4k|16 8k

gzip_buffers指令定义压缩响应(response)的缓冲区数量和大小。

注意,默认值的大小是内存页面的大小,具体取决于操作系统。

gzip_comp_level

语法gzip_comp_level level;
默认值1
可选值1-9

gzip_comp_level指令定义压缩响应(response)的压缩级别。

gzip_disable

语法gzip_disable level;
默认值

gzip_disable指令定义正则表达式,匹配正则表达式的会禁止请求头是“User-Agent”的响应进行压缩。

gzip_http_version

语法gzip_http_version level;
默认值1.1
可选值1.0,1.1

gzip_http_version指令定义http的版本,请求版本低于该值时不压缩。

gzip_min_length

语法gzip_min_length length;
默认值20

gzip_min_length指令定义响应的最小长度,低于该值的响应不进行压缩。最小长度只会根据响应头(response header)字段“Content-Length”来确定。

gzip_proxied

语法gzip_proxied parameter;
默认值off
可选值off,expired,no-cache,no-store,private,no_last_modified,no_etag,auth,any

gzip_proxied指令定义什么类型的响应头才会启用压缩。

该指令有多个参数可用:

  • off 禁用所有代理请求的压缩,忽略其它参数。
  • expired 响应头包含禁用缓存“expired”关键字,则启用压缩。
  • no-cache 响应头包含“Cache-Control:no-cache”关键字,则启用压缩。
  • no-store 响应头包含“Cache-Control:no-store”关键字,则启用压缩。
  • private 响应头包含“Cache-Control:private”关键字,则启用压缩。
  • no_last_modified 响应头不包含“Last-Modified”关键字,则启用压缩。
  • no_etag 响应头不包含“ETag”关键字,则启用压缩。
  • auth 响应头包含“Authorization”关键字,则启用压缩。
  • any 所有代理请求启用压缩。

gzip_types

语法gzip_types length;
默认值text/html

gzip_types指令定义响应的MIME类型。特殊值*表示任何MIME类型,并且始终会对text/html类型的响应进行压缩。

gzip_vary

语法gzip_vary parameter;
默认值off
可选值off,on

gzip_vary指令定义是否在响应头上插入“Vary: Accept-Encoding”。

注意,插入响应头的前提是gzip、gzip_static、gunzip指令是激活的状态,或者说是这三个参数使用后才能配置gzip_vary。

嵌入变量

除上面的指令外,ngx_http_gzip_module模块还提供了一个变量,该变量主要是用来获取压缩率。

$gzip_ratio

$gzip_ratio是计算原始响应大小和压缩响应大小之间的比率,也可以简单理解为压缩率。

嵌入变量用法

使用该变量也很简单,通常是用在日志中输出,来显示压缩率。

[root@localhost conf]# vim nginx.conf

log_format  main '"$gzip_ratio"'

使用

在配置文件nginx.conf中新增指令即可。

[root@localhost conf]# vim nginx.conf

    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 1;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;
0

评论区