nginx zstd压缩
-
Zstd(Zstandard), Facebook(Meta)开发的开源无损数据压缩算法,2016 年发布, “高性能+高压缩比”的平衡——既比传统压缩算法(如 Gzip、Deflate)压缩更快、压缩率更高,也比同级别高压缩比算法(如 LZMA)速度更快,同时支持可配置的压缩级别(1-22,级别越高压缩率越高但速度越慢),还提供“快速模式”(级别 -1 到 -13)满足低延迟场景。
测试环境:Debain 13 Nginx1.31.0
I 编译最新的Zstd库
# 安装编译工具 sudo apt install build-essential git libpcre3-dev zlib1g-dev libssl-dev debhelper sudo apt remove libzstd-dev libzstd1 # 1. 进入源码存放目录 cd /usr/src # 2. 克隆 Facebook Zstd 官方主分支源码 sudo git clone --depth 1 https://github.com/facebook/zstd.git cd zstd # 3. 编译并安装(核心库编译非常快) sudo make -j$(nproc) sudo make install # 4. 刷新系统的动态链接库缓存,让系统认出刚刚安装的最新 libzstd.so sudo ldconfigII 编译zstd-nginx模块
# 1. 下载并解压 Nginx 1.31.0 官方源码 sudo wget http://nginx.org/download/nginx-1.31.0.tar.gz sudo tar -zxf nginx-1.31.0.tar.gz # 2. 克隆 zstd-nginx-module 源码 sudo git clone https://github.com/tokers/zstd-nginx-module.git # 3. 进入 Nginx 源码目录 cd nginx-1.31.0 # 4. 配置编译参数:通过包含路径,强行让它关联到我们刚才安装在 /usr/local/include 的最新 Zstd 头文件 sudo ./configure --with-compat \ --add-dynamic-module=/usr/src/zstd-nginx-module \ --with-cc-opt="-I/usr/local/include" \ --with-ld-opt="-L/usr/local/lib -Wl,-rpath,/usr/local/lib" # 5. 仅编译模块 sudo make modulesIII 载入zstd模块
# 1. 覆盖复制到 Nginx 模块目录 sudo cp objs/ngx_http_zstd_filter_module.so /usr/lib/nginx/modules/ sudo cp objs/ngx_http_zstd_static_module.so /usr/lib/nginx/modules/2. 赋予标准权限
sudo chmod 644 /usr/lib/nginx/modules/ngx_http_zstd_*.so
打开 /etc/nginx/nginx.conf,在最顶部添加加载指令:
# 引入 Zstd 动态过滤和静态加载模块 load_module modules/ngx_http_zstd_filter_module.so; load_module modules/ngx_http_zstd_static_module.so; user www-data; worker_processes auto;IV 修改网页配置
以Flarum 为例
zstd on; zstd_comp_level 3; # 动态压缩推荐级别 3(1-5 之间性能与压缩率平衡最佳,最大为 22) zstd_min_length 256; # 小于 256 字节的文件不压缩 zstd_buffers 16 8k; # 允许 Nginx 直接读取预先压缩好的 .zst 静态文件(如果存在) zstd_static on; # 精准针对 Flarum 的 API、JS 和各种文本格式进行 Zstd 压缩 zstd_types text/plain text/css text/javascript application/javascript application/json application/xml application/rss+xml application/atom+xml image/svg+xml image/x-icon;#检查配置文件,重启Nginx nginx -t systemctl reload nginx按下 F12 打开开发者工具,前往 Network(网络) 面板。
Content-Encoding: zstd
Vary: Accept-Encoding表明 Nginx 1.31.0 已经成功部署了目前业界公认在动态生成场景下处理效率极高、对 CPU 压迫极小的 Zstd 压缩引擎!