跳转至

brotli: NGINX Brotli 动态模块

安装

你可以在任何基于 RHEL 的发行版上安装此模块,包括但不限于:

  • RedHat Enterprise Linux 7, 8, 9 and 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 and Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-brotli
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-brotli

通过在 /etc/nginx/nginx.conf 顶部添加以下内容来启用该模块:

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

本文档描述的是 nginx-module-brotli v0.1.4, 发布于 2021 年 7 月 1 日。


Brotli 是一种通用的无损压缩算法,它通过结合 LZ77 算法的现代变体、Huffman 编码 以及二阶上下文建模来压缩数据,其压缩比可与当前最好的通用压缩方法相媲美。 它在速度上与 deflate 相近,但能提供更高的压缩密度。

ngx_brotli 是一组包含两个 nginx 模块的集合:

  • ngx_brotli filter module - 用于对响应进行实时压缩,
  • ngx_brotli static module - 用于提供预压缩文件。

配置指令

brotli_static

  • 语法: brotli_static on|off|always
  • 默认值: off
  • 上下文: http, server, location

启用或禁用对带有 .br 扩展名的预压缩文件是否存在的检查。当取值为 always 时, 将在所有情况下使用预压缩文件,而不会检查客户端是否支持。

brotli

  • 语法: brotli on|off
  • 默认值: off
  • 上下文: http, server, location, if

启用或禁用对响应的实时压缩。

brotli_types

  • 语法: brotli_types <mime_type> [..]
  • 默认值: text/html
  • 上下文: http, server, location

text/html 之外,为指定的 MIME 类型启用响应的实时压缩。特殊值 * 可匹配任意 MIME 类型。 text/html MIME 类型的响应始终会被压缩。

brotli_buffers

  • 语法: brotli_buffers <number> <size>
  • 默认值: 32 4k|16 8k
  • 上下文: http, server, location

已弃用,将被忽略。

brotli_comp_level

  • 语法: brotli_comp_level <level>
  • 默认值: 6
  • 上下文: http, server, location

设置实时压缩的 Brotli 质量(压缩)level。 可接受的值范围为 011

brotli_window

  • 语法: brotli_window <size>
  • 默认值: 512k
  • 上下文: http, server, location

设置 Brotli 窗口 size。可接受的值为 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k, 512k, 1m, 2m, 4m, 8m16m

brotli_min_length

  • 语法: brotli_min_length <length>
  • 默认值: 20
  • 上下文: http, server, location

设置将被压缩的响应的最小 length。 该长度仅从响应头字段 Content-Length 中确定。

变量

$brotli_ratio

实际压缩比,计算方式为原始响应大小与压缩后响应大小之间的比值。

配置示例

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
             application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
             application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
             font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
             image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

GitHub

你可以在 GitHub 仓库: nginx-module-brotli 中找到更多与该模块相关的配置建议和文档。