nginx gzip模块

2022/08/08

nginx gzip模块

一.配置

1.gzip

是否启用gzip

Syntax: gzip on | off
Default: gzip off
Context: http, server, location
2. gzip_buffers

设置用于压缩响应的缓冲区的数量和大小

Syntax: gzip_buffers number size;
Default: gzip_buffers 32 4k|16 8k;
Context: http, server, location
3. gzip_comp_level

设置响应的 gzip 压缩级别,级别由1-9

1 压缩比最小处理速度最快,9 压缩比最大但处理最慢

Syntax: gzip_comp_level level;
Default: gzip_comp_level 1;
Context: http, server, location
4. gzip_disable

禁用对具有匹配任何指定正则表达式的“User-Agent”标头字段的请求的响应的 gzip 压缩。

Syntax: gzip_disable *regex* …;
Default:  
Context: http, server, location
5. gzip_http_version

设置压缩响应所需的请求的最低 HTTP 版本

Syntax: gzip_http_version 1.0 | 1.1
Default: gzip_http_version 1.1;
Context: http, server, location
6. gzip_min_length

设置将被压缩的响应的最小长度。长度仅由“Content-Length”响应头字段确定。

Syntax: gzip_min_length *length*;
Default: gzip_min_length 20;
Context: http, server, location
7. gzip_proxied

根据请求和响应启用或禁用代理请求的响应 gzip 压缩。 请求被代理的事实是由“Via”请求头字段的存在决定的。 该指令接受多个参数

  • off : 禁用所有代理请求的压缩,忽略其他参数;
  • expired : 如果响应标头包含带有禁用缓存值的“Expires”字段,则启用压缩;
  • no-cache : 如果响应头包含带有“no-cache”参数的“Cache-Control”字段,则启用压缩;
  • no-store : 如果响应头包含带有“no-store”参数的“Cache-Control”字段,则启用压缩;
  • private : 如果响应头包含带有“private ”参数的“Cache-Control”字段,则启用压缩;
  • no_last_modified : 如果响应头不包含“Last-Modified”字段,则启用压缩;
  • no_etag : 如果响应头包含“ ETag ”字段,则启用压缩;
  • auth : 如果响应头包含“ Authorization ”字段,则启用压缩;
  • any : 为所有代理请求启用压缩。
Syntax: gzip_proxied off expired no-cache no-store private no_last_modified no_etag auth any
Default: gzip_proxied off;                
Context: http, server, location                
8. gzip_types

除了“text/html”之外,还启用对指定 MIME 类型的响应的 gzip 压缩。 特殊值“*”匹配任何 MIME 类型 (0.8.29)。 “text/html”类型的响应总是被压缩的。

Default: gzip_types text/html;
Syntax: gzip_types mime-type …;
Context: http, server, location
9. gzip_vary

如果指令 gzip、gzip_static 或 gunzip 处于活动状态,则启用或禁用插入“Vary: Accept-Encoding”响应头字段。

Default: gzip_vary on | off
Syntax: gzip_vary off;
Context: http, server, location

推荐示例:

server {
    listen 8080;
    
    gzip on;
	gzip_disable "msie6";

	gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 6;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_min_length 256;
	gzip_types
  		application/atom+xml
  		application/geo+json
  		application/javascript
  		application/x-javascript
  		application/json
  		application/ld+json
  		application/manifest+json
  		application/rdf+xml
  		application/rss+xml
  		application/xhtml+xml
 		application/xml
  		font/eot
  		font/otf
  		font/ttf
  		image/svg+xml
  		text/css
  		text/javascript
  		text/plain
  		text/xml;
    #cache 这类客户端不要会请求服务端,服务端改了配置和内容,客户端在这个期间也不会有感知的
    location ~* .(?:css|js|png|jpeg)$ {
  		expires 7d;
  		add_header Cache-Control "public";
	}
    #no-cache, 客户端会缓存但是每一个请求还是会带etag请求服务端
    location ~* .html$ {
  		expires 7d;
  		add_header Cache-Control "public, no-cache";
	}
  }

2.HTTP Cache-Control

  • public : 表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存,即使是通常不可缓存的内容。(例如:1.该响应没有max-age指令或Expires消息头;2. 该响应对应的请求方法是 POST 。)
  • private : 表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它)。私有缓存可以缓存响应内容,比如:对应用户的本地浏览器。
  • no-cache : 在发布缓存副本之前,强制要求缓存把请求提交给原始服务器进行验证 (协商缓存验证)。
  • no-store : 缓存不应存储有关客户端请求或服务器响应的任何内容,即不使用任何缓存。

能摸鱼就很舒服

Show Disqus Comments
扫码关注公众号:纯洁的微笑
发送 290992
即可立即永久解锁本站全部文章