Zstandard (zstd)#

该模块添加了对响应进行 Zstandard 压缩的支持,包括动态压缩(即时)和静态压缩(预压缩文件)。与 gzip 相比,zstd 在相当或更好的压缩率下提供更高的压缩和解压缩速度。

该模块由两个组件组成:

  • http_zstd_filter — 用于动态压缩响应;

  • http_zstd_static — 用于提供预压缩文件。

安装#

安装 该模块,请使用以下软件包之一:

  • Angie:angie-module-zstd

  • Angie PRO:angie-pro-module-zstd

模块加载#

main{} 上下文中启用模块:

load_module modules/ngx_http_zstd_filter_module.so;
load_module modules/ngx_http_zstd_static_module.so;

配置示例#

server {
    listen 80 default_server;

    zstd_types text/plain text/css;
    zstd_min_length 256;         # 压缩的最小响应长度
    zstd_comp_level 3;           # 压缩级别(1 到 22)

    # 动态文件压缩
    location / {
        zstd on;
        root /usr/share/angie/html;
    }

    # 后端响应的动态压缩
    location /bk/ {
        zstd on;
        proxy_pass http://127.0.0.1:8081/;
    }

    # 使用预压缩的 .zst 文件
    location /static/ {
        zstd_static on;
        root /usr/share/angie;
    }
}

server {
    listen 8081;
    location / {
        root /usr/share/angie/html;
        index index.html;
    }
}

工作原理#

您可以组合使用动态压缩(zstd on)和静态压缩(zstd_static on)。在这种情况下,服务器将首先查找预压缩的 .zst 文件。如果不存在,它将动态压缩响应。

仅当 Accept-Encoding 请求头包含 zstd 时才执行压缩,例如:

Accept-Encoding: gzip, zstd

如果应用了压缩或找到了预压缩文件,则会添加以下响应头:

Content-Encoding: zstd

更多信息#

完整文档和源代码可在以下位置获取: tokers/zstd-nginx-module