Ngx 第三方库 ngx_brotli

CentOS 7、8 安装并加载 Nginx 模组 ngx_brotli 然后启用 brotli 压缩

项目地址:Github 仓库地址

ngx_brotli

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

注意:该压缩编码仅可用于 https 通信。

ngx_brotli 包含两个模块:

  • ngx_brotli filter module - 用于动态压缩响应体。

  • ngx_brotli static module - 用于使用预压缩的 .br 文件进行服务(静态站点)。

安装方法

获取 ngx_brotli

  1. 确保你安装了 git,如果没有,使用命令安装:

yum -y install git
  1. 从仓库获取 ngx_brotli

git clone https://github.com/google/ngx_brotli.git

如果服务器位于国内,建议使用镜像:

  1. 初始化子模块

获取 Nginx 源码

  1. 如果你已经安装了 Nginx,请查看版本:

本示例已安装 nginx 版本为:

nginx version: nginx/1.20.1

  1. 获取并解压 Nginx 源码(将字符x替换为你的 Nginx 版本号,如未安装可自定义)

本示例版本为 1.20.1,则命令为:

  1. 清除垃圾文件

安装

以下两种方式选择一种即可,已通过 yum 源安装 Nginx 建议选择第一种 动态模块加载

动态模块加载

  1. 安装编译所需环境

  1. 进入 Nginx 源码目录并编译子模块

官方文档说明为:

本示例则使用(ngx_brotli已克隆到本地~目录下):

  1. 将生成的 .so 动态库移动到 Nginx 的 modules 目录(默认为/etc/nginx/modules

  1. 为 .so 动态库文件添加权限

  1. nginx.conf 中添加配置(添加至 http 块之上)

模块静态编译并安装

将第一行中的字符x替换为你上文中获取的 Nginx 源码版本号

该操作将会直接将ngx_brotli编译并直接安装到 Nginx 中

配置项

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 类型> [..]

  • 默认值:text/html

  • 上下文:http, server, location

除了text/html外,还支持对特定的MIME类型进行动态压缩。特殊值*会匹配所有MIME类型,Content-Typetext/html的响应体将总是被压缩。

brotli_buffers

  • 语法:brotli_buffers <number> <size>

  • 默认值:32 4k|16 8k

  • 上下文:http, server, location

已被弃用,忽略该条配置项。

brotli_comp_level

  • 语法:brotli_comp_level <级别>

  • 默认值:6

  • 上下文:http, server, location

设置 Brotli 动态压缩质量级别,取值范围从011。取值越大但性能损耗越高,压缩比越高,建议默认。

brotli_window

  • 语法:brotli_window <大小>

  • 默认值:512k

  • 上下文:http, server, location

设置 Brotli 窗口大小,取值为1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k, 512k, 1m, 2m, 4m, 8m16m。Gzip 压缩使用固定大小的32k窗口,这意味着 Brotli 窗口最多可以比 deflate 窗口大 512 倍。这种差异在 Web 服务器上下文中几乎无关紧要,因为大于 32KB 的文本文件是少数。

brotli_min_length

  • 语法:brotli_min_length <长度>

  • 默认值:20

  • 上下文:http, server, location

设置启用 Brotli 压缩的响应体最小长度,该值只会根据响应头中的Content-Length字段进行判断。

变量

$brotli_ratio:实现压缩比,原始响应大小和压缩响应大小之间的比率计算结果。

示例配置

错误处理

**如果 ngx make 出现错误**

**处理方法**

Last updated