Brotli 在瑞士德语中的意思是小面包(真·吃货·谷歌 啊)。Brotli 是一个通用目的的无损压缩算法,它通过用变种的 LZ77 算法,Huffman 编码和二阶文本建模进行数据压缩,是一种压缩比很高的压缩方法。在压缩速度上跟 Deflate 差不多的同事却实现了更密集的压缩,对 Canterbury 资料库的压缩密度好于 LZMA 和 bzip2。
來源: Nginx 使用 Brotli 压缩算法,Better than Gzip Compression | 米饭粑
安装
Brotli 的实现需要用到如下三个库,google/brotli 包含在 bagder/libbrotli 中。
google/brotli
google/ngx_brotli
bagder/libbrotli
一、首先安装 brotli 和 libbrotli
git clone https://github.com/bagder/libbrotli
cd libbrotli
./autogen.sh
./configure
make && make install
二、安装 ngx_brotli,重新编译 Nginx 或者 Openresty,在末尾加上 ./configure --add-module=/path/to/ngx_brotli
即可
例如,
cd /tmp
git clone https://github.com/google/ngx_brotli.git
# 已经下载好 ngx_brotli 了
cd nginx-1.11.3
./configure --add-module=/tmp/ngx_brotli
三、编辑 nginx.conf 文件,在http配置段增加以下配置
brotli on;
brotli_comp_level 6;
brotli_buffers 16 8k;
brotli_min_length 20;
brotli_types *;
(可选)四、反代禁用 gizp,反代 node.js 应用,如果他们启用了 gzip 了,他们在反代的地方就要添加:
proxy_set_header Accept-Encoding "";
五、重启 Nginx
service nginx restart
如果提示:
nginx: error while loading shared libraries: libbrotlienc.so.1: cannot open shared object file: No such file or directory
那么 SSH 中输入:
ldconfig
即可解决。