Nginx 压缩和解压

压缩过程减少了传输数据的大小。然而,由于压缩发生在运行时,它也可能包括相当大的处理开销,这会对性能产生负面影响。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;  
} 

在上面的例子中,为了服务一个对 /p​​ath/to/file 的请求,NGINX 试图找到并发送文件/path/to/file.gz。如果文件不存在,或者客户端不支持 gzip,NGINX 会发送未压缩的文件。