宝塔面板6.8.8 NGINX自编译Brotli压缩-提高压缩比加速网站

2019年1月15日10:52:45 3 3,289
华为828

宝塔面板目前还没有自带Brotli压缩,需要自己编译不过Brotli压缩可以和Gzip和谐共存,而且Brotli压缩效率要高于Gzip,所以大鸟准备给自己的服务器配置Brotli压缩。

理论上讲Brotli压缩比比GZIP要高不少,所以对于网页打开速度也是有一定作用的,不过想要秒开的感觉,还是先从硬件上提升一下速度吧。而且一般来说我们的VPS主机已经默认开启了GZIP压缩了。Brotli与GZIP可以同时共存,当同时开启两种压缩算法时,Brotli 压缩等级优先级高于 Gzip

如果需要具体了解去维基:https://en.wikipedia.org/wiki/Brotli#Browser_support

服务器环境 centos 7  宝塔面板6.8.8 nginx 1.15.6 我们看看如何给NGINX自编译Brotli压缩吧。

相关宝塔面板的编译教程:

BT(宝塔面板)6.X自编译nginx前端优化模块ngx_pagespeed-让网站速度在再给力一点

BT(宝塔面板)6.6nginx自编译 ngx_lua_waf web 应用防火墙模块

第一、备份nginx

你可以使用SSH工具以ROOT权限登陆之后下载备份nginx,也可以直接使用命令备份nginx。

1、查看nginx位置

ps -elf | grep nginx

2、进入宝塔面板的nginx目录

cd /www/server/nginx/sbin/

3、备份宝塔nginx

cp nginx nginx.bak

第二、安装brotli

1.安装libbrotli

我们首先进入server目录,安装libbrotli ,路径:/www/server 命令如下:

cd /www/server
git clone https://github.com/bagder/libbrotli
cd libbrotli
./autogen.sh
./configure
make && make install

2.下载ngx_brotli模块及其依赖

cd /www/server
git clone https://github.com/google/ngx_brotli
cd ngx_brotli && git submodule update --init

3.获取Nginx Arguments

nginx -V

注意这个命令是大写的V,如果小写v是不会显示模块的,这里会显示出所有的已经编译的模块。将./configure arguents:之后的内容复制到记事本备用。大鸟这里是:

--user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-openssl-opt='enable-tls1_3 enable-weak-ssl-ciphers' --with-ld-opt=-ljemalloc

复制的就是默认的nginx自带的模块,我还可以看看图:宝塔面板6.8.8 NGINX自编译Brotli压缩-提高压缩比加速网站

第三、编译Brotli

我们需要到/www/server/nginx/src这个目录里面来编译新模块,这是宝塔面板的默认路径,其他面板请自行更改路径。

cd /www/server/nginx/src
./configure 上一步记事本中的备用内容 --add-module=/www/server/ngx_brotli

注意--add-module前面是有空格的,./configure后面也有空格。

在最后加上--add-module=/www/server/ngx_brotli

大鸟的nginx全部代码如下:

./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-openssl-opt='enable-tls1_3 enable-weak-ssl-ciphers' --with-ld-opt=-ljemalloc --add-module=/www/server/ngx_brotli
make

按每个人的环境不一样,不要完全复制需要修改的修改。编译安装过程大概要5分钟左右,还是有点长的。

第四、nginx

完成后将系统中原有的nginx用重新编译生成的nginx文件替换。

1、停止nginx

service nginx stop

2、删除原来的nginx,操作之前请确认自己的nginx已经备份

rm -rf /www/server/nginx/sbin/nginx

3、复制新编译的nginx

cp /www/server/nginx/src/objs/nginx /www/server/nginx/sbin/

4、启动nginx

service nginx start

5、查看模块

如图:

宝塔面板6.8.8 NGINX自编译Brotli压缩-提高压缩比加速网站

第五、配置Brotli压缩

最后,在你的网站的Nginx配置中加入Brotli代码即可(就是网站管理-配置)如图:

宝塔面板6.8.8 NGINX自编译Brotli压缩-提高压缩比加速网站

 

brotli             on;
brotli_comp_level  6;
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一些参数的说明,你可以根据自己的需要来调整:

  brotli on;              #启用
  brotli_comp_level 6;    #压缩等级,默认 6,太高的压缩水平可能需要更多的 CPU
  brotli_buffers 16 8k;   #请求缓冲区的数量和大小
  brotli_min_length 20;   #指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩。这里指定 20 字节
  brotli_types *;         #指定允许进行压缩类型
# brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml text/html application/json image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl image/x-icon image/jpeg image/gif image/png image/bmp;
  brotli_static always;   #是否允许查找预处理好的、以 .br 结尾的压缩文件,可选值为 on、off、always
  brotli_window 512k;     #窗口值,默认值为 512k

我们配置好了Brotli现在要在浏览器中检查是否启用成功。

宝塔面板6.8.8 NGINX自编译Brotli压缩-提高压缩比加速网站

我们看到已经启用成功。

第六、总结

理论上讲Brotli压缩比比GZIP要高不少,所以对于网页打开速度也是有一定作用的,大鸟这里已经树立开启了Brotli,加上Nginx fastcgi_cache缓存的加持,TLSV1.3的光环护佑,网站速度还是有很大提升的。

这里是各大浏览器支持Brotli的情况:https://caniuse.com/#feat=brotli

宝塔面板6.8.8 NGINX自编译Brotli压缩-提高压缩比加速网站

额,不会没关系,大鸟这都有教程,我来给你们罗列下:

BT(宝塔面板)-WordPress开启Nginx fastcgi_cache缓存加速

宝塔面板之网站优化加速-开启TLSV1.3

  • 我的微信
  • 分享宝塔面板建站技术交流等!
  • weinxin
  • 博客公众号
  • 关注本博公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  3   博主  0

    • avatar 崔先森 0

      嗯,加上了~ :mrgreen:

      • avatar 简单生活 2

        浏览器大多不支持,然并卵!

          • avatar 大鸟 6

            @简单生活 两者相互兼容,如果浏览器不支持Brotli,会用Gzip的方式,所以还是值得编译的。感谢大佬支持!