插件窝 干货文章 怎么为Nginx启用Brotli压缩算法

怎么为Nginx启用Brotli压缩算法

Brotli Nginx 压缩 配置 878    来源:    2025-04-25

为Nginx启用Brotli压缩算法指南

Brotli是Google开发的一种现代压缩算法,比传统的Gzip压缩率更高。以下是配置Nginx支持Brotli的详细步骤:

前提条件

  • Nginx 1.11.5或更高版本
  • 服务器root或sudo权限
  • 基本的Nginx配置知识

安装方法

方法一:使用预构建模块(推荐)

  1. 安装Brotli库和Nginx模块

    # Ubuntu/Debian
    sudo apt install brotli libbrotli-dev
    
    # CentOS/RHEL
    sudo yum install brotli brotli-devel
    
  2. 下载并编译Nginx动态模块

    wget https://github.com/google/ngx_brotli/archive/refs/heads/master.zip -O ngx_brotli.zip
    unzip ngx_brotli.zip
    cd ngx_brotli-master
    
  3. 编译动态模块

    ./configure --with-compat --add-dynamic-module=/path/to/ngx_brotli
    make modules
    
  4. 将模块复制到Nginx模块目录

    cp objs/ngx_http_brotli_filter_module.so /etc/nginx/modules/
    cp objs/ngx_http_brotli_static_module.so /etc/nginx/modules/
    

方法二:从源码重新编译Nginx

  1. 下载Brotli源码

    git clone https://github.com/google/ngx_brotli.git
    cd ngx_brotli
    git submodule update --init
    
  2. 重新配置Nginx

    ./configure --add-module=/path/to/ngx_brotli [其他原有参数]
    make
    sudo make install
    

配置Nginx

  1. 在主配置中加载模块

    nginx.conf的顶部添加:

    load_module modules/ngx_http_brotli_filter_module.so;
    load_module modules/ngx_http_brotli_static_module.so;
    
  2. 在http或server块中添加Brotli配置

    http {
       brotli on;
       brotli_comp_level 6;
       brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
       # 其他配置...
    }
    

配置选项说明

  • brotli on|off: 启用/禁用Brotli压缩
  • brotli_comp_level: 压缩级别(1-11),默认6
  • brotli_types: 指定压缩的MIME类型
  • brotli_min_length: 最小压缩长度,默认20字节
  • brotli_window: 滑动窗口大小,默认512k

验证配置

  1. 检查配置语法:

    sudo nginx -t
    
  2. 重新加载Nginx:

    sudo systemctl reload nginx
    
  3. 验证Brotli是否生效:

    curl -H 'Accept-Encoding: br' -I http://yourdomain.com | grep -i content-encoding
    

    应该返回content-encoding: br

注意事项

  1. 建议同时保留Gzip作为备用:

    gzip on;
    gzip_vary on;
    brotli on;
    
  2. Brotli压缩级别高于4会显著增加CPU使用率

  3. 静态预压缩文件可以减轻服务器负担:

    brotli_static on;
    
  4. 确保客户端支持Brotli(所有现代浏览器都支持)

通过以上步骤,您的Nginx服务器现在应该能够提供Brotli压缩内容,从而减少传输数据量并提高网站性能。