风车云

OneinStack 升级 nginx 快速启用 Brotli 压缩

如果使用 OneinStack 搭建 LNMP 环境,开启 Brotli 压缩不难,修改一下 OneinStack 代码中 nginx 升级脚本,下载 Brotli,然后升级 nginx,修改一下配置,重启 nginx 即可。

「OneinStack 升级 nginx 快速启用 Brotli 压缩:https://ae.mba/36」

Brotli 压缩 简介

项目地址:https://github.com/google/ngx_brotli

Brotli 最初发布于 2015 年,用于网络字体的离线压缩。Google 软件工程师在 2015 年 9 月发布了包含通用无损数据压缩 Brotli 增强版本,特别侧重于 HTTP 压缩。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。

「OneinStack 升级 nginx 快速启用 Brotli 压缩:https://ae.mba/36」

与常见的通用压缩算法不同,Brotli 使用一个预定义 120 千字节字典,预定义的算法可以提升较小文件的压缩密度。使用 Brotli 可以提高网站访问速度。

温馨提示:以下操作请根据实际修改 oneinstack 路径。

下载 Brotli 源码

cd /root/oneinstack/src
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli && git submodule update --init

修改 OneinStack 的 nginx 升级脚本

nginx_modules_options 中新增 --add-module=../ngx_brotli,在 /root/oneinstack/include 目录,找到 upgrade_web.sh,将 ./configure ${nginx_configure_args} 修改为:

「OneinStack 升级 nginx 快速启用 Brotli 压缩:https://ae.mba/36」
./configure ${nginx_configure_args} --add-module=../ngx_brotli

也可以直接执行如下代码快速替换:

sed -i 's!{nginx_configure_args}!{nginx_configure_args} --add-module=../ngx_brotli!g' /root/oneinstack/include/upgrade_web.sh

执行脚本升级 Nginx

/root/oneinstack/upgrade.sh

选择升级 nginx,输入一个比当前新的版本号即可,可到 nginx 官网查询新版本。

正常情况,几分钟就能升级完成。执行 nginx -V 命令检查一下,没报错,并且回显有如下字样即可:

「OneinStack 升级 nginx 快速启用 Brotli 压缩:https://ae.mba/36」

--add-module=../ngx_brotli

修改 nginx 配置启用 Brotli

修改 /usr/local/nginx/conf/nginx.conf 文件,在 http { } 中找到:

##Brotli Compression
#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 Compression
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;

如果没有这几行,可在 #Gzip Compression 配置结束后增加进去。

然后重启一下 nginx:service nginx restart

Brotli 兼容性

IE 不支持,Edge 15 开始支持,Chrome、Firefox、Safari 等现代浏览器基本上支持。详见:https://caniuse.com/brotli

建议 Gzip 和 Brotli 同时开启,这样不支持 Brotli 的浏览器可以用 Gzip,参考配置:

#Gzip Compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
text/javascript application/javascript application/x-javascript
text/x-json application/json application/x-web-app-manifest+json
text/css text/plain text/x-component
font/opentype application/x-font-ttf application/vnd.ms-fontobject
image/x-icon;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

##Brotli Compression
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 是否成功开启

Chrome 打开网页,F12 或者 Ctrl+Shift+I 打开开发者工具,Network -- 选择页面地址 -- Headers,Response Headers 中有 content-encoding: br 表示开启成功。

退出移动版