Zstandard (zstd)#
该模块为响应添加了对 Zstandard 压缩的支持,支持动态压缩(实时)和静态压缩(预压缩文件)。与 gzip 相比,zstd 在相同或更好的压缩比下提供更高的压缩和解压速度。
模块由两个组件组成:
http_zstd_filter — 用于动态压缩响应;
http_zstd_static — 用于处理预压缩的文件。
加载模块#
在 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