brotli模块说明

Brotligoogle(著名404公司) 开源的通用无损压缩算法,通过变种的 LZ77算法 、Huffman 编码以及二阶文本建模等方式进行数据压缩,其压缩率可与目前最好的通用压缩算法相媲美。用于网页小文件压缩,从而提升加载速度。

静态编译

服务器需要先安装 git

yum install -y git

随便找一个文件夹,如 /usr/local/src 下载 brotli

cd /usr/local/src && git clone https://github.com/google/ngx_brotli.git

进入ngx_brotli模块文件夹下

cd ngx_brotli/deps && rm -rf brotli && git clone https://github.comgoogle/brotli.git

查看 Nginx 已编译的模块

nginx -V

复制 configure arguments: 后的内容,例如

configure arguments: --user=www --group=www --prefix=/usr/local/nginx --add-module=/usr/local/nginx/src/ngx_devel_kit

找到你的 nginx 安装包,已删除了自行重新下载
进入 nginx 安装包文件夹,在 ./configure 后粘贴你刚才复制的内容,最后面增加--add-module=/usr/local/src/ngx_brotli 即可,如

./configure --user=www --group=www --prefix=/usr/local/nginx --add-module=/usr/local/nginx/src/ngx_devel_kit --add-module=/usr/local/src/ngx_brotli

最后编译安装即可

make && make install

动态挂载

和上述步骤基本一样
在生成 Makefile 时修改编译参数为生成动态加载库即可 --with-compat --add-dynamic-module=/usr/local/src/ngx_brotli

./configure --user=www --group=www --prefix=/usr/local/nginx --add-module=/usr/local/nginx/src/ngx_devel_kit  --with-compat --add-dynamic-module=/usr/local/src/ngx_brotli

然后编译库

make modules

查看是否生成成功,生成的 so 库在 objs 目录下

ls objs/*.so

复制 so 库到已经在运行的 nginxmodules 目录下

cp objs/{ngx_http_brotli_filter_module.so,ngx_http_brotli_static_module.so} /usr/local/nginx/modules

加载动态库,为了便于管理所有动态库,自定义一个 conf 配置文件

vi /usr/local/nginx/conf/modules.conf

i 进入编辑,粘贴下面内容

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

依次按下 ESC : w q 保存

让 nginx 调用 conf 配置文件

vi /usr/local/nginx/conf/nginx.conf

找到一下内容 pid /var/run/nginx.pid;i 在下方添加

include /etc/nginx/modules.conf;

brotli配置

同样是在 /usr/local/nginx/conf/nginx.conf 这里配置

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;

参数解释

#启用
brotli on;
#压缩等级,默认6,最高11,太高的压缩水平可能需要更多的CPU        
brotli_comp_level 6;
#指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩
brotli_min_length 20;
#指定允许进行压缩类型
brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml text/html;
#是否允许查找预处理好的、以.br结尾的压缩文件,可选值为on、off、always
brotli_static always;
#设置Brotli窗口大小,默认值为512k
brotli_window 512k;

然后重新加载 nginx 配置即可生效

nginx/sbin/nginx -t
nginx/sbin/nginx -s reload

无法下载请看

下载失败或者下载很慢的请替换成镜像站,任选其一

git clone https://hub.fastgit.org/google/ngx_brotli.git
或者,选其一即可
git clone https://gitclone.com/github.com/google/ngx_brotli.git
cd ngx_brotli/deps && rm -rf brotli
git clone https://hub.fastgit.org/google/brotli.git
或者,选其一即可
git clone https://gitclone.com/github.com/google/brotli.git
END
最后修改:2020 年 12 月 22 日
如果觉得我的文章对你有用,请随意赞赏