brotli模块说明
Brotli
是 google(著名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
库到已经在运行的 nginx
的 modules
目录下
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