unbrotli: 为不支持 Brotli 的客户端解压 Brotli 编码的响应
安装
您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:
- RedHat Enterprise Linux 7、8、9 和 10
- CentOS 7、8、9
- AlmaLinux 8、9
- Rocky Linux 8、9
- Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-unbrotli
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-unbrotli
通过在 /etc/nginx/nginx.conf 的顶部添加以下内容来启用模块:
load_module modules/ngx_http_unbrotli_filter_module.so;
本文档描述了 nginx-module-unbrotli v0.0.2,于 2024 年 12 月 18 日发布。
ngx_unbrotli 是一个过滤模块,用于为不支持 Brotli 的客户端解压以 Brotli 编码的响应(Content-Encoding: br)。通过以 Brotli 格式存储响应,您可以节省存储和 I/O 成本,而该模块确保无法处理 Brotli 的客户端仍然能够接收适当的解压内容。
示例配置
location /storage/ {
unbrotli on;
unbrotli_buffers 32 4k;
...
}
配置指令
unbrotli
- 语法:
unbrotli on | off; - 默认值:
off - 上下文:
http,server,location
启用或禁用对不支持 Brotli 的客户端的 Brotli 压缩(Content-Encoding: br)响应的解压。当 unbrotli 被启用时,服务器会检查客户端的能力(类似于 gzip 处理的方式)以确定是否需要解压。
unbrotli_force
- 语法:
unbrotli_force on | off; - 默认值:
off - 上下文:
http,server,location
强制解压 Brotli 压缩的响应,即使客户端表示支持 Brotli。当 unbrotli_force 为 on 时,所有 Brotli 编码的响应在发送给客户端之前都会被解压,无论客户端的 Accept-Encoding 头如何。
unbrotli_buffers
- 语法:
unbrotli_buffers number size; - 默认值: 取决于系统页面大小,通常为:
unbrotli_buffers 32 4k;或unbrotli_buffers 16 8k; - 上下文:
http,server,location
设置用于解压 Brotli 响应的缓冲区数量和大小。通常,大小等于一个内存页面(4 KB 或 8 KB,取决于平台)。增加这些缓冲区的数量或大小可以提高大响应的性能,但会增加内存使用。
GitHub
您可以在 nginx-module-unbrotli 的 GitHub 仓库 中找到有关此模块的其他配置提示和文档。