Nginx Mainline 是 Nginx Web 服务器的开发分支,提供稳定版本发布之前的最新功能、更新和性能改进。对于需要访问最新功能和增强功能的开发人员和管理员来说,它是理想之选。Nginx Mainline 特别适合需要先进性能和灵活性的环境,例如高流量网站、负载平衡和反向代理配置。
在 Debian 12 或 11 上,您可以通过两种主要方法通过命令行终端安装 Nginx Mainline。第一种选择是使用 nginx.org 提供的官方 apt 镜像,这可确保您直接从 Nginx 团队接收最新更新。或者,您可以使用由 Ondřej Surý 维护的第三方存储库安装 Nginx Mainline,他以维护 Nginx 和其他基本软件的最新软件包而闻名。本指南将引导您完成这两种方法,让您选择最适合您需求的方法。
方法 1:通过 Nginx.org 安装 Nginx Mainline
Nginx Mainline 安装前步骤
更新 Debian 系统软件包
本指南的第一步是确保您的 Debian 系统已完全更新。这可确保您拥有所有软件包和安全补丁的最新版本。要更新软件包列表和软件包本身,您首先需要在终端中执行以下命令:
sudo apt update
要升级任何过时的软件包,请运行以下命令:
sudo apt upgrade
安装所需的软件包
根据您选择在 Debian 系统上安装最新 Nginx 主线版本的方法,两种方法都可能需要额外的软件包。以下命令将安装所需的内容:
sudo apt install curl gnupg2 ca-certificates lsb-release dirmngr software-properties-common apt-transport-https -y
大多数可能已经安装,但请重新运行此命令以确保它们已安装。
导入 Nginx.org Nginx 主线存储库
此方法直接从 Nginx.org 的官方 APT 存储库获取最新的 Nginx 主线或稳定版本。这是在发布新版本的 Nginx 时立即保持更新的最佳选择。
导入 Nginx.org GPG 密钥
第一步是下载并添加 Nginx GPG 密钥。此密钥对于验证我们将要安装的软件包的真实性是必需的:
curl -fSsL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null
我们现在将使用 GPG 密钥来验证密钥是否成功导入:
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
假设导入成功,您将看到确认密钥详细信息的输出。
成功时的示例输出:
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <signing-key@nginx.com>
导入 Nginx.org APT 存储库
在安全地放置 GPG 密钥后,我们可以将 Nginx Mainline 或 Stable 存储库添加到我们的 APT 包管理器列表中。
要导入 Nginx Mainline 存储库,请使用:
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
笔记: 本文主要讨论如何安装 Nginx 主线。不过,我也提供了安装最新稳定版本的选项,对于许多 Linux 发行版来说,这将是一次重大升级。
或者,对于 Nginx Stable 存储库:
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
我们的下一个目标是配置 APT 固定,以便优先使用来自 nginx.org 存储库的 Nginx 包,而不是来自默认 Debian 或其他第三方存储库的任何包。
我们通过使用以下命令来实现这一点:
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
示例输出:
x\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
Package: *
Pin: origin nginx.org
Pin: release o=nginx
Pin-Priority: 900
在此阶段,我们需要更新我们的 APT 存储库以包含新增内容:
sudo apt update
完成 Nginx Mainline 安装
所有设置正确后,我们现在可以安装 Nginx:
sudo apt install nginx
安装完成后,验证安装是否成功至关重要。为了确认 Nginx 的安装正确,我们可以检查安装的版本:
nginx -v
命令输出应反映最新的 Nginx Mainline 或 Stable 版本,具体取决于您安装的版本。
方法 2:通过 Ondřej Surý 安装 Nginx Mainline
第二种方法使用由 Ondřej Surý 维护的知名第三方存储库,Debian 和 Ubuntu 社区中的许多人都知道他维护上游版本的 Apache、Nginx 和 PHP 存储库。这种方法依赖于等待他发布新版本时进行更新。它不如 Nginx.org APT 存储库快,但此版本包含额外的编译模块;一个是使用 Brotli。
导入 Nginx 主线
要从第三方存储库导入 Nginx Mainline 存储库,这很简单;使用以下命令:
curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x
对于那些喜欢切换回最新稳定版本或者想要使用稳定版本而不是主线版本的人,请使用以下命令来导入此版本:
curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x
确保您已删除主线版本以避免冲突。
安装 Nginx Mainline
现在,您可以使用以下命令安装 Nginx 主线或稳定版:
sudo apt install nginx
确认 Nginx Mainline 安装
安装 Nginx 后,您可以使用以下命令确认安装:
nginx -v
输出应显示安装的 Nginx 版本;如果它与最新主线匹配,则您已成功安装主线版本。
附加 Nginx 技巧以及 Ondřej Surý 安装方法
在 Nginx Mainline 或 Stable 上安装 Brotli
由于 Nginx 主线或稳定版本都包含 brotli 模块,因此要安装该模块,请使用以下命令:
sudo apt install libnginx-mod-brotli
现在打开你的 Nginx 配置文件:
sudo nano /etc/nginx/nginx.conf
要在 Nginx 服务器上启用 Brotli 压缩,你需要在 HTTP 块中添加以下配置 nginx.conf
配置文件:
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
以下是配置指令的细分:
- brotli on;:
- 该指令启用 Brotli 压缩。
- brotli_comp_level 6;:
- 这会将压缩级别设置为 6(范围为 0-11)。值越高,压缩效果越好,但会占用更多 CPU 资源。
- brotli_static on;:
- 此指令告诉 Nginx 检查带有 .br 扩展名的预压缩文件。如果存在这样的文件,则会提供该文件,而不是动态压缩文件。
- brotli_types …;:
- 此指令指定应压缩的响应的 MIME 类型。类型列表很长,包括可从 Brotli 压缩中受益的各种文本格式、字体和图像。
现在在重新加载之前测试 nginx 配置以确保没有错误:
sudo nginx -t
现在使用以下命令测试 brotli 压缩:
curl -I --compressed http://your-server.com/some-path
以下是所用命令的详细说明:
- curl:这是用于发送 HTTP 请求的命令行工具。
- -I:此标志告诉 curl 仅获取标题。
- –compressed:此标志告诉 curl 请求压缩内容。
- http://your-server.com/some-path:这是您正在测试的 URL。
在输出中查找标有 Content-Encoding: br 的标题。这表明正在使用 Brotli 压缩:
Content-Encoding: br
结论
通过使用 nginx.org 的官方 apt-mirror 或 Ondřej Surý 的第三方存储库在 Debian 上安装 Nginx Mainline,您就为服务器配备了最新、最先进的 Nginx 版本。这可确保您的系统能够利用针对特定环境量身定制的尖端功能和性能改进。从您选择的存储库定期更新将使 Nginx 安全高效地运行。无论您选择官方镜像还是第三方存储库,维护 Nginx Mainline 都将帮助您在 Debian 系统上保持 Web 服务器技术的领先地位。