介绍
Brotli 是由 Google 开发的通用无损压缩算法,是 Gzip,Zopfli 和 Deflate 的替代品,Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩。与其他压缩算法相比,它有着更高的压缩效率与压缩比。Brotli 采用的是宽松的 MIT 许可协议。
下载源码
服务器上 Nginx 已在运作,只需单独编译 Brotli 动态模块,不用重新安装 Nginx。先看下已安装的 Nginx 版本:
nginx -v
nginx version: nginx/1.16.1
在 Nginx 官网下载对应版本的源码
wget https://nginx.org/download/nginx-1.16.1.tar.gz
tar zxvf nginx-1.16.1.tar.gz
从 Github 克隆 Brotli
yum install -y git; git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli; git submodule update --init
编译模块
进入 nginx-1.16.1 目录编译 ngx_brotli 动态模块
yum install -y gcc kernel-headers pcre pcre-devel zlib zlib-devel openssl openssl-devel
Debian:
apt update
apt install -y gcc make libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev build-essential libbrotli-dev
cd ../nginx-1.16.1
./configure --with-compat --add-dynamic-module=../ngx_brotli && make modules
安装模块
检查后,将模块文件拷贝到 Nginx 模块目录ls objs/*.so
ngx_http_brotli_filter_module.so
ngx_http_brotli_static_module.so
cp objs/*.so /etc/nginx/modules/
chown www-data /etc/nginx/modules/*.so
Debian:
cp objs/*.so /usr/share/nginx/modules/
chown www-data /usr/share/nginx/modules/*.so (?)
在 Nginx 的配置文件 /etc/nginx/nginx.conf 中插入内容(注意:load_module 指令必须插入在 events{...} 之前!)
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
最后,在站点的配置文件中 /etc/nginx/conf.d/website.conf 追加内容
brotli on;
brotli_static on;
brotli_comp_level 5;
brotli_types text/plain text/css text/xml text/javascript application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
重新加载 Nginx 配置
nginx -t
nginx -s reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
完成!
验证
访问站点,在浏览器中打开“开发者工具”,切换到 Network 选项卡,查看 Headers 标签:
看到 content-encoding: br 字样说明 Brotli 压缩算法已经成功启用了。
版权声明:本文为原创文章,版权归 BenhoN 所有。
本文链接:https://blog.benhon.net/archives/install_brotli_compression_in_nginx.html
所有原创文章采用知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可,你可以自由地转载和修改,但请务必注明文章来源并且不可用于商业目的。