宝塔面板目前还没有自带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、下载ngx_brotli模块及其依赖
cd /www/server git clone https://github.com/google/ngx_brotli cd ngx_brotli && git submodule update --init
2、获取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
第三、编译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、查看模块
如图:
第五、配置Brotli压缩
最后,在你的网站的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现在要在浏览器中检查是否启用成功。
我们看到已经启用成功。
第六、总结
理论上讲Brotli压缩比比GZIP要高不少,所以对于网页打开速度也是有一定作用的,大鸟这里已经树立开启了Brotli,加上Nginx fastcgi_cache缓存的加持,TLSV1.3的光环护佑,网站速度还是有很大提升的。
这里是各大浏览器支持Brotli的情况:https://caniuse.com/#feat=brotli
额,不会没关系,大鸟这都有教程,我来给你们罗列下: