压缩过程减少了传输数据的大小。然而,由于压缩发生在运行时,它也可能包括相当大的处理开销,这会对性能产生负面影响。Nginx 在向客户端发送响应之前执行压缩,但不会对已经压缩的响应进行双重压缩。
启用压缩
要启用压缩,请添加带有on参数的 gzip 指令:
gzip on;
默认情况下,Nginx 仅使用 text/html(MIME 类型)压缩响应。要使用其他 MIME 类型压缩响应,请添加 gzip_types 指令并列出其他类型。
gzip_types text/plain application/xml;
我们可以定义要压缩的响应的最小长度,使用 gzip_min_length 指令。默认值为 20 字节。
gzip_min_length 1000;
开启解压
某些客户端不使用 gzip 编码方法处理响应。同时,可能需要动态存储压缩数据或响应并将它们存储在缓存中。为了成功地为接受和不接受压缩数据的客户端提供服务,NGINX 可以在将数据发送到后一种类型的客户端时即时解压缩数据。
要启用运行时解压缩,请使用 gunzip 指令。
location /storage/ { gunzip on; ... }
gunzip 指令可以在与 gzip 指令相同的上下文中定义:
server { gzip on; gzip_min_length 1000; gunzip on; ... }
注意:该指令在一个单独的模块中定义,默认情况下可能不包含在 NGINX 构建中。
发送压缩文件
要将压缩文件而不是常规文件发送到客户端,请在适当的上下文中将 gzip_static 指令设置为 on。
location / { gzip_static on; }
在上面的例子中,为了服务一个对 /path/to/file 的请求,NGINX 试图找到并发送文件/path/to/file.gz。如果文件不存在,或者客户端不支持 gzip,NGINX 会发送未压缩的文件。
分享笔记