我们很高兴地宣布 NGINX Plus Release 32 (R32) 已经上市。 NGINX Plus 基于 NGINX 开源,是唯一集 Web 服务器、负载均衡器、反向代理、内容缓存和 API 网关于一体的软件。
NGINX Plus R32 的新增功能和增强功能包括:
该版本还包括从 NGINX 开源继承的新功能和错误修复以及对 NGINX JavaScript 模块的更新。
笔记: 如果您要从 NGINX Plus R31 以外的版本升级,请务必检查以前公告博客中的“行为的重要变化”部分,了解当前版本和此版本之间的所有版本。
NGINX Plus R18 中引入的 OpenTracing 模块已被弃用,并被标记为在 NGINX Plus R34 中删除。 在此之前,相关软件包将随所有 NGINX Plus 版本提供。 我们强烈建议用NGINX Plus R29中引入的OpenTelemetry 模块取代 OpenTracing 模块。
ModSecurity 模块将于 2024 年 3 月 31 日终止支持。 因此,modsec 包已从 NGINX Plus 存储库中删除,并且以后将不再从 NGINX Plus 存储库中提供。
NGINX 开源和 NGINX Plus 包使用 PGP 密钥进行签名。 此密钥将于 2024 年 6 月 16 日到期。 我们已更新密钥的到期日期,因此现有软件包可以在 2024 年 6 月 16 日之后继续验证。 我们将生成新的密钥对来签署即将发布的软件包。
所有 NGINX 用户应按照以下步骤下载并安装更新的 PGP 密钥:
在 Ubuntu/Debian 上:
wget -qO - https://nginx.org/keys/nginx_signing.key | wget -qO - https://nginx.org/keys/nginx_signing.key | gpg --亲爱的 | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
在 RHEL/CentOS 上:
sudo rpm -e gpg-pubkey-7bd9bf62-5762b5f8
sudo rpm --import https://nginx.org/keys/nginx_signing.key
2024 年 6 月 16 日之后,您将无法验证软件签名,直到您更新密钥。
在未来的 NGINX Plus 版本中,我们将简化我们的打包和发布政策。 NGINX Plus 将仅在受支持的操作系统发行版的最新版本上构建和测试。 如果您在旧发行版上安装 NGINX Plus,您的包管理器可能会建议更新依赖库和包。
此版本对支持的平台做出了以下更改。
支持的新操作系统:
已删除旧操作系统:
较旧的操作系统已弃用并计划在 NGINX Plus R33 中删除:
以前,NGINX 每次在 NGINX 配置中引用时都会加载证书、密钥或证书吊销列表。 这意味着对同一对象的多次引用会导致相同次数的该对象的重新加载。 当继承诸如受信任证书列表之类的指令时,这种延迟会加剧。 在某些条件下,这种行为会严重影响 NGINX 启动时间,并且可能需要大量内存来存储配置。
在新的行为下,SSL 指令现在引用缓存的证书文件和相关对象。 因此,重复引用相同证书对象的配置的内存占用和加载时间大大减少。 在涉及大型 NGINX 配置的情况下,其好处最为明显,因为在大量位置块中引用了一小组受信任的证书。
以下是加载时间改进的可视化,其中 NGINX 配置了大约 5400 个位置块(顶级和嵌套)和 878 个证书。
请注意图表右侧的加载时间显著下降,平均加载时间从更改前的约 40 秒减少到新行为下的约 6 秒。
NGINX Plus R32 继承了NGINX 开源 1.25.5的一项功能,为 NGINX 添加了新的可配置层。具体来说,NGINX流模块现在可以充当路由器,充当代理,能够将连接从流上下文传递到其他上下文(如 http、邮件)或流上下文本身内的单独虚拟服务器。
此功能作为此版本中引入的ngx_stream_pass_module 模块的一部分提供。 该模块有一个单独的指令“pass”,可用于指定传递客户端连接的地址。 该地址可以由 IP 地址和端口组合、套接字路径指定,或由 NGINX 变量引用。
借助此功能,希望通过单个 L4 端点运行所有流量的客户现在可以在 L4 流上下文中终止 SSL 连接,并将其传递给流上下文中的其他模块(http、邮件)或其他虚拟服务器。 此外,可以根据服务器名称或协议有条件地终止 SSL 连接,同时将剩余的流量代理到其他地方。 这解锁了一组用于管理来自单个端点的流量的新的可能的配置行为。
以下配置代码片段终止流模块中的 SSL 连接,并根据请求的服务器名称有条件地将它们传递给 http 上下文或流上下文中的另一个虚拟服务器。
http {
服务器 {
监听 8000;
位置 / {
返回 200 foo;
}
}
}
流 {
映射 $ssl_server_name $pass_port {
foo.example.com 8000;
默认 9001;
}
服务器 {
监听 9000 ssl;
ssl_certificate domain.crt;
ssl_certificate_key domain.key;
传递 127.0.0.1:$pass_port;
}
服务器{
监听 9001;
返回 bar\n;
}
}
在此示例中,所有 SSL 连接均在流服务器块终止。 根据传入请求中的服务器名称,连接将传递到监听端口 8000 的 http 服务器或监听端口 9001 的流虚拟服务器。
该模块的另一个应用解决第三方模块不支持 SSL 终止的用例。 在这种情况下,stream_pass 模块可以在将 TLS 加密连接传递给第三方模块之前终止它们。
此示例演示了RTMP 模块(本身不支持 SSL)如何使用 stream_pass 模块接受 TLS 加密流量。
rtmp {
服务器 {
听 1935;#rtmp
应用foo{
继续生活;
}
}
}
溪流 {
服务器 {
收听 1936 ssl; #rtmps
ssl_证书域.crt;
ssl_certificate_key 域.key;
传递 127.0.0.1:1935;
}
}
在此配置片段中,SSL 连接在流服务器块中终止并传递给 rtmp。 该连接对于 RTMP 模块来说似乎是未加密的,因此无需额外的定制或处理开销来支持 SSL 连接。
NGINX Plus R32 包括官方可用的 NGINX Plus 容器镜像,用于 NGINX Plus 的特权和非特权执行。 这两种容器类型都可选安装 NGINX Agent,以便轻松连接到 NGINX 支持的管理平面。 这些图像可以从 NGINX 注册表下载,网址为:private-registry.nginx.com。 按照这些说明使用您的 NGINX Plus 证书和密钥或 JSON Web Token (JWT) 访问图像。
在实验性的 HTTP3/QUIC 实施中发现并修复了以下潜在的安全问题。
NGINX Plus R32 基于NGINX Open Source 1.25.5 ,继承了自NGINX Plus R31发布(在 NGINX 1.25.4 和 1.25.5 中)以来的功能变化、特性和错误修复。
有关从最新版本继承的新更改、功能、错误修复和解决方法的完整列表,请参阅 NGINX更改文件。
NGINX Plus R32 吸收了 NGINX JavaScript (njs) 模块版本 0.8.4 的变化。 以下是自 0.8.2(NGINX Plus R31 附带的版本)以来 njs 的显著变化列表。
有关所有功能、更改和错误修复的完整列表,请参阅 njs变更日志。
如果您正在运行 NGINX Plus,我们强烈建议您尽快升级到 NGINX Plus R32。 除了所有出色的新功能之外,您还将获得一些额外的修复和改进,这使得 NGINX 可以在您需要提出支持单时更轻松地为您提供帮助。
如果您不是 NGINX Plus 用户,我们鼓励您尝试一下。 您可以将其用于安全、负载均衡和 API 网关用例,或将其用作具有增强的监控和管理 API 的完全支持的 Web 服务器。 立即开始30 天免费试用。
“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”