背景

一般来说,在虚拟主机、VPS上运行的网站,都会默认开启 Gzip 压缩。但由谷歌开发的 Brotli 压缩算法,在压缩效率上高于其他的压缩算法。

本文介绍如何在 OneinStack 的 LNMP 配置中,开启 Brotli 压缩算法。

手动编译 Brotli

首先我们登入 SSH,进入到 oneinstack/src 文件夹:

cd ~/oneinstack/src

从 Github 上 Clone Brotli 项目到本地,并初始化:

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

然后在 oneinstack/src 目录内,解压出 nginx、pcre、openssl 这几个程序的安装文件:

tar xzf nginx-1.22.0.tar.gz
tar xzf pcre-8.45.tar.gz
tar xzf openssl-1.1.1q.tar.gz

其中各个程序的文件名可能不一样,因为 OneinStack 会从官网、Github 下载最新的安装文件,版本不一样所以需要自己更改命令,也可以使用tab自动补全。

然后进入解压后的 nginx-1.22.0 文件夹,首先查看当前 nginx 的编译参数:

cd nginx-1.22.0
nginx -V

记录下 configure arguments: 后方输出的结果

在后面加上 --add-module=../ngx_brotli,然后运行:

./configure [刚刚复制的参数] --add-module=../ngx_brotli
make #编译
mv /usr/local/nginx/sbin/nginx{,_`date +%F`}  #备份nginx
cp objs/nginx /usr/local/nginx/sbin
nginx -V

如果屏幕输出的最后带有 ngx_brotli,那么已经编译成功!🎉

Nginx 配置

为了避免每添加一个网站便要添加一次 Brotli 配置,在 nginx.conf 文件内配置。由于我使用的是 Oneinstack 环境,所以打开 /usr/local/nginx/conf/nginx.conf 文件进行这几行内容的注释即可:

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

如果你使用的是其他的 Nginx 环境,复制以上的内容粘贴即可,最后记得重启 Nginx 程序。

参考资料