nginx 1.17 已发布,这是 nginx 目前最新的版本,同时也是 mainline 主线版。我们都知道,nginx 都会同时维护着两个分支,分别为 mainline 主线版和 stable 稳定版。不过在 nginx 中,“稳定”指的是功能和更新频率,它与软件质量无关。稳定分支在其生命周期中从不接收新功能,并且通常仅接收一个或两个更新,用于修复严重的错误。
mainline 是更新活跃的开发分支,其添加了最新功能和错误修复。其版本号的第二位用奇数表示,例如 1.17.0。
stable 接收针对高严重性错误的修复,但不会使用最新的功能。其版本号的第二位用偶数表示,例如 1.16.0。
稳定分支的生命周期一般是一年,每年四月官方就会停止对当前稳定分支的维护,不再提供错误修复补丁。这会触发两个事件:
第一,官方会 fork 当前的 mainline 版本,以用于创建下一个稳定版本。这样一来,稳定分支就继承了过去一年中 mainline 版本的所有错误修复补丁、新增功能和其他变更。上个月发布的 nginx 1.16.0 稳定版就是 fork 自 1.15.12 mainline 版本。
第二,mainline 分支将会获得新的版本升级,即其版本号的第二位奇数会增加为下一个奇数,mainline 分支每 4-6 周就会发布一个新版本,nginx 1.17.0 是最新 mainline 版本的首次发布。
▲ 看图比较容易理解 nginx 版本的演进过程
官方还建议用户采用主线分支,因为它能最快地用上新特性、性能改进和增强功能,还可以及时修复错误。总之,按官方的说法,主线分支完全适用于生产环境。
下面看看作为最新 mainline 版本的 1.17.0,包含了哪些新功能和改进。
nginx 1.17.0 包含对带有limit_rate
指令的带宽限制配置中的变量的支持,并且允许该include
指令在所有配置上下文中使用,甚至在if
块内。
开发团队还开始支持 QUIC 和 HTTP/3(传输协议的下一次重大更新版本),它将应用到网站、应用程序和 API。
其他变更包括:
支持的最低 OpenSSL 版本为 0.9.8
include 指令在“if”和“limit_except”块中不起作用
……