ngx_http_gzip_module
nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
gzip on | off; 启用和禁用gzip压缩,默认关闭 gzip_disable regex 为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。禁用IE6 gzip功能 gzip_disable "MSIE [1-6]\."; gzip_http_vrsion 1.1; 设定启用压缩功能时,协议的最小版本,默认:1.1 gzip_static 告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源。这要求你预先压缩你的文件(在这个例子中被注释掉了),从而允许你使用最高压缩比,这样nginx就不用再压缩这些文件了 gzip_min_length gzip压缩的最小文件,小于设置值的文件将不会压缩。 gzip_comp_level 设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。我们设置为4,这是一个比较折中的设置。(压缩级别,1压缩比最小处理速度最快,9压缩比最大但处理最慢,同时也最消耗CPU,一般设置为3就可以了) gzip_buffers 4 8k; 指定Nginx服务需要向服务器申请的缓存空间的个数*大小,默认32 4k|16 8k; gzip_types 设置需要压缩的数据格式,默认包含有text/html。 text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; gzip_proxied 允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求。gzip_proxied [off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any] … gzip_vary on | off; 如果启用压缩,是否在响应报文首部插入“Vary: Accept-Encoding” 注意:使用curl --compressed http://www.abc.com curl有关键才能看到压缩,查看访问日志。 Nginx作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含”Via”的 header头。如 当后端返回的请求头有中Expires就启用压缩。 gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...; 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 – 无条件启用压缩
例子
server { listen 80; server_name gzip.zjol.com.cn; charset utf-8; location /gzip{ root /data/nginx/html; gzip on; gzip_comp_level 5; gzip_min_length 1k;
gzip_proxied any ;
gzip_types text/plain application/javascript application/x-javascript text/cssapplication/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/jpg ; gzip_vary on; } }
前后对比
[root@localhost7D ~]# curl --head --compressed http://gzip.zjol.com.cn/gzip/001.jpg
HTTP/1.1 200 OK
Server: nginx/1.17.1
Date: Sat, 16 Jul 2022 11:46:28 GMT
Content-Type: image/jpeg
Content-Length: 5311122
Last-Modified: Mon, 15 Nov 2021 08:56:37 GMT
Connection: keep-alive
ETag: "619220c5-510a92"
Accept-Ranges: bytes
[root@localhost7D ~]# curl --head --compressed http://gzip.zjol.com.cn/gzip/001.jpg
HTTP/1.1 200 OK
Server: nginx/1.17.1
Date: Sat, 16 Jul 2022 11:45:55 GMT
Content-Type: image/jpeg
Last-Modified: Mon, 15 Nov 2021 08:56:37 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"619220c5-510a92"
Content-Encoding: gzip