Clouodon Blog
    • 版块
    • 最新
    • 用户
    • 友链
    • 注册
    • 登录

    nginx zstd压缩

    已定时 已固定 已锁定 已移动 软件教程
    1 帖子 1 发布者 27 浏览
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 四折光曲四 离线
      四折光曲
      最后由 编辑

      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 ldconfig
      

      II 编译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 modules
      

      III 载入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
      

      在线检测:https://zstd.wcode.net

      按下 F12 打开开发者工具,前往 Network(网络) 面板。
      Content-Encoding: zstd
      Vary: Accept-Encoding

      表明 Nginx 1.31.0 已经成功部署了目前业界公认在动态生成场景下处理效率极高、对 CPU 压迫极小的 Zstd 压缩引擎!

      1 条回复 最后回复 回复 引用

      你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

      厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

      有了你的建议,这篇帖子会更精彩哦 💗

      注册 登录
      • 第一个帖子
        最后一个帖子