Nginx 压缩和解压

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

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 会发送未压缩的文件。

Nginx Plus 是一种模块化架构。我们可以通过软件模块包含新的特性和功能,这些模块可以按需插入到正在运行的 Nginx Plus 实例中。动态模块包括 Nginx Plus 的功能,例如按 IP 地址定位用户、调 ...