本教程适用于以下操作系统版本
- Ubuntu 20.04(Focal Fossa)
- Ubuntu 18.04(Bionic Beaver)
本页内容
- 先决条件
- 开始之前
- 下载 Nginx 和 Brotli 源码
- 安装 Nginx 并启用 Brotli 支持
- 验证 Nginx 和 Brotli
- 结语
Brotli 是由 Google 创建的一款开源压缩算法。它可以作为 Gzip、Zopfli 和 Deflate 的替代方案。它是一种通用无损压缩算法,通过结合现代变体的 LZ77 算法与 Huffman 编码来压缩数据。相比当前的主流压缩算法,它的数据压缩率高出 10% 到 20%。
本教程将向你展示如何在 Ubuntu 20.04 服务器上为 Nginx 安装 Brotli。
先决条件
- 一台运行 Ubuntu 20.04 的服务器。
- 服务器上已配置 root 密码。
开始之前
首先,建议将你的系统软件包更新到最新版本。你可以通过运行以下命令来全部更新:
apt-get update -y
所有软件包更新完成后,你可以运行以下命令安装其他依赖项:
apt-get install dpkg-dev curl gnupg2 build-essential zlib1g-dev libpcre3 libpcre3-dev unzip -y
所有依赖项安装完成后,你可以继续进行下一步。
下载 Nginx 和 Brotli 源码
在下载 Nginx 和 Brotli 源码之前,你必须先将 Nginx 软件仓库添加到你的系统中。
首先,使用以下命令下载并添加 Nginx 密钥:
curl -L https://nginx.org/keys/nginx_signing.key | apt-key add -
密钥添加完成后,使用以下命令添加 Nginx 软件仓库:
nano /etc/apt/sources.list.d/nginx.list
添加以下内容:
deb http://nginx.org/packages/ubuntu/ focal nginx deb-src http://nginx.org/packages/ubuntu/ focal nginx
完成后保存并关闭文件,然后运行以下命令更新软件仓库:
apt-get update -y
软件仓库更新完成后,切换到 /usr/local/src 目录,并使用以下命令下载 Nginx 源码:
cd /usr/local/src
apt-get source nginx
接下来,运行以下命令安装 Nginx 所需的全部依赖项:
apt-get build-dep nginx -y
所有依赖项安装完成后,运行以下命令从 Git 仓库下载最新版本的 Brotli 源码:
git clone --recursive https://github.com/google/ngx_brotli.git
接下来,切换到 Nginx 源码目录并编辑 debian 规则文件:
cd /usr/local/src/nginx-*/
nano debian/rules
现在你会得到 'config.env.nginx' 和 'config.env.nginx_debug' 两个构建环境。在这两个构建环境中都添加 ngx_brotli 的 '--add-module=' 选项。
--add-module=/usr/local/src/ngx_brotli
完成后保存并关闭文件。现在,运行以下命令编译并构建带有 ngx_brotli 支持的 nginx 软件包:
dpkg-buildpackage -b -uc -us
构建完成后,你会在 '/usr/local/src' 目录下得到 nginx-*.deb 软件包,如下所示。
ls -l /usr/local/src/*.deb
你应该会看到类似以下的输出:
-rw-r--r-- 1 root root 1124244 Dec 2 06:30 /usr/local/src/nginx_1.18.0-2~focal_amd64.deb -rw-r--r-- 1 root root 10608196 Dec 2 06:30 /usr/local/src/nginx-dbg_1.18.0-2~focal_amd64.deb
完成后,你可以继续进行下一步。
安装 Nginx 并启用 Brotli 支持
现在你已拥有带有 Brotli 支持的 Nginx 软件包。你可以通过以下命令安装它们:
cd /usr/local/src/
dpkg -i *.deb
所有软件包安装完成后,编辑 Nginx 主配置文件并启用 Brotli 支持:
nano /etc/nginx/nginx.conf
在 http{ 下方添加以下内容:
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;
保存并关闭文件,然后运行以下命令检查 Nginx 是否存在语法错误:
nginx -t
你应该会看到类似以下的输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
接下来,重启 Nginx 服务以使更改生效:
systemctl restart nginx
完成后,你可以继续进行下一步。
验证 Nginx 和 Brotli
至此,Nginx 已安装并配置好 Brotli 支持。现在是时候测试 Nginx 的 Brotli 支持是否已启用了。
要进行测试,请在你的终端中运行以下命令:
curl -H 'Accept-Encoding: br' -I http://localhost
如果一切正常,你会看到 Brotli 支持对应的结果 'content-encoding: br',如下所示:
HTTP/1.1 200 OK Server: nginx/1.18.0 Date: Wed, 02 Dec 2020 06:38:17 GMT Content-Type: text/html Last-Modified: Tue, 21 Apr 2020 14:09:01 GMT Connection: keep-alive ETag: W/"5e9efe7d-264" Content-Encoding: br
结语
恭喜!你已成功在 Ubuntu 20.04 服务器上为 Nginx 安装了 Brotli 支持。希望你现在可以轻松在生产环境中启用 Brotli 压缩。如果你有任何疑问,欢迎随时向我提问。