月下博客

宝塔面板Nginx-Tengine开启编译ngx_brotli压缩,宝塔面板最新安装ngx_brotli压缩命令

昨天把服务器Nginx修改为宝塔集成的Nginx-Tengine,后来又开启了“http_concat_module模块”再后来一起编译了“brotli压缩”现在记录下 方便以后会用到。

之前有一篇文章写过安装 google/ngx_brotli宝塔面板LNMP开启编译Brotli压缩宝塔面板安装Brotli压缩命令,不过呢,由于 ngx_brotli 程序的发展,所以之前的教程不再适合新的 ngx_brotli 了。

本站开启Brotli压缩效果图

Brotli压缩浏览器支持情况

Chrome从版本49开始支持,但是完整的支持是在版本50(2016年5月27日开始支持)。

Firefox从版本52开始支持。

IE全版本不支持,但是Edge从版本15开始支持。

Safari全系不支持。

Opera从版本44开始支持。

支持Brotli压缩算法的浏览器使用的内容编码类型为br,例如以下是Chrome浏览器请求头里Accept-Encoding的值:

Accept-Encoding: gzip, deflate, sdch, br

如果服务端支持Brotli算法,则会返回以下的响应头:

Content-Encoding: br

需要注意的是,只有在HTTPS的情况下,浏览器才会发送br这个Accept-Encoding。

目前,网站普遍使用的是gzip压缩算法,当然你可能还知道deflate和sdch算法,但是最近两年新兴了一个新的压缩算法:Brotli,下面我将会对这个算法进行简单的介绍。

brotli压缩

Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比。据谷歌研究,Brotli压缩速度同zlib的Deflate实现大致相同,而在Canterbury语料库上的压缩密度比LZMA和bzip2略大。 链接:Google开源Brotli压缩算法 微软使用了一种基于谷歌提供的C代码的实现,向.NET Core 2.1添加了Brotli压缩支持。由于Brotli得到了许多Web浏览器和Web服务器的广泛支持,所以.NET Core提供对这项技术的支持是非常有用的。

什么是 Brotli 压缩算法

Brotli最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。

与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。

使用brotli替换deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。使用Brotli进行流压缩的内容编码类型已被提议使用“br”。

安装Brotli压缩

例如,我们将 google/ngx_brotli 下载并解压到 /tmp/ngx_brotli 目录。

cd /www/server/nginx/src    //进去宝塔面板nginx安装目录
git clone https://github.com/google/ngx_brotli    //下载ngx_brotli到安装目录
cd /www/server/nginx/src/ngx_brotli       //进去ngx_brotli目录
git submodule update --init    //更新brotli
cd /www/server/nginx/src    //返回宝塔面板nginx安装目录
./configure --user=www --group=www --prefix=/www/server/nginx ... --add-module=/www/server/nginx/src/ngx_brotli    //#生成Makefile,./configure后面的参数直接复制原来的(使用nginx -V命令获取),然后在后面额外加一个--add-module=/www/server/nginx/src/ngx_brotli
make && make install       //编译nginx

不出意外就可以安装成功了,

开启Brotli 压缩

编辑 nginx.conf 文件,在http配置段增加以下配置,然后重启即可

brotli on;
brotli_comp_level 1;
brotli_buffers 16 8k;
brotli_min_length 20;
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;

如果,nginx 反代的程序也启了 gzip 压缩,就要设置 反代禁用 gizp

反代代码中添加:

proxy_set_header Accept-Encoding "";

官方QQ群号码:922069959

您可能感兴趣的文章