压缩过程减小了传输数据的大小。但是,由于压缩是在运行时发生的,因此压缩还可能包含相当大的处理开销,这可能会对性能产生负面影响。 Nginx在将响应发送到客户端之前执行压缩,但不会对已压缩的响应进行双重压缩。
要启用压缩,请在gzip伪指令中添加 on 参数:
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; ... }
可以在与gzip指令相同的上下文中定义gunzip指令:
server { gzip on; gzip_min_length 1000; gunzip on; ... }
要将压缩文件发送给客户端而不是常规文件,请在适当的上下文中将gzip_static伪指令设置为on。
location/{ gzip_static on; }
在上面的示例中,NGINX尝试为/path/to/file请求提供服务,以查找并发送文件 /path/to/file.gz 。如果该文件不存在,或者客户端不支持gzip,则NGINX发送未压缩的文件。