介绍
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;
评论区