本文最后更新于 3003 天前,其中的信息可能已经有所发展或是发生改变。
google/ngx_brotli
的最新版已经无需安装额外依赖(bagder/libbrotli),查阅新版教程:https://bbs.mf8.biz/ngx_brotli/
介绍
Brotli 在瑞士德语中的意思是小面包(真·吃货·谷歌 啊)。Brotli 是一个通用目的的无损压缩算法,它通过用变种的 LZ77 算法,Huffman 编码和二阶文本建模进行数据压缩,是一种压缩比很高的压缩方法。在压缩速度上跟 Deflate 差不多的同事却实现了更密集的压缩,对 Canterbury 资料库的压缩密度好于 LZMA 和 bzip2。
目前 Brotli 已经广泛的用户 CDN 加速项目,例如 Cloudflare 和 CDN77 均有部署。
下面将介绍如何在 Nginx 上应用此项目
安装
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
即可解决。