近期Nginx发布了1.17.0主线版本与1.16.0稳定版本,并且发布了一篇文章< Introducing NGINX 1.16 and 1.17 >说明Nginx的版本更新策略、推荐分支、1.16.x新增的主要特性、1.17.x的路线规划。

【版本策略】

分支说明

与Linux内核版本号类似,nginx的版本号也使用奇数偶数区分开发版本(主线版本)与稳定版本。例如1.13.x、1.15.x、1.17.x系列就是开发版本,1.12.x、1.14.x、1.16.x就是稳定版本。

关于主线版本与稳定版本的定义,按官方的说法如下:

  • 主线版本就是开发版本,会持续的加入特性与修补bug。
  • 稳定版本,只修复有高安全风险的bug。

特别注意,稳定版本与开发版本并不是软件质量上的区别,只是特性更新频率的区别。

版本演进

关于版本之间如何演进,请参考以下这张图片:

在每年4月前后nginx的开发会进行一次版本号的推进,发布新的主线版本与稳定版本,例如近期的1.17.0与1.16.0。在这有几点值得注意:

  • 版本号推进后,旧的稳定版本将不继续更新,也不继续合入bug修复。
  • 主线版本号推进并没有大的特性更新,例如从1.15.12到1.17.0,也是常规特性新增与bug修复,并不会加入大量特性。
  • 稳定版本号推进将加入大量主线版本特性,例如从1.14.2到1.16.0,将加入所有1.15.x主线版本开发的所有特性修改。(1.16.0与1.15.12内容相同)
  • 主线版本的更新周期,大约是4~6周一次,可以通过订阅http://nginx.org/en/CHANGES,获取更新内容。

【如何选择分支】

通过以上版本策略描述,主线版本与稳定版本只存在特性上的不同,对于软件质量要求都是一致的。所以官方的推荐是尽量使用主线版本。

同时Nginx的商业版本(NGINX Plus)也总是基于最近的主线版本,并加入闭源的部分代码,形成商业版本提供服务。

但是由于主线版本的更新周期较快,如果紧跟主线版本有困难,可以选择跟进稳定版本,每年做一次大的更新。

在我个人的工作中,我们团队交付的组件是基于nginx进行大量的二次开发。每月同步主线版本将带来很多工作量。(我们对nginx代码进行了大量调整)所以我们采取了2个活动,保障组件与官方代码的同步,更好地利用开源软件优势。

  • 订阅NGINX主线版本更新,关注是否有与我们密切相关的特性修改,选择性同步。
  • 每年同步一次稳定版本,防止过大的差异导致失去开源支持。

【参考资料】

nginx版本策略的更多相关文章

  1. accept_mutex与性能的关系 (nginx)

    注:运行环境CentOS 6+   背景      在对启动了20个worker的nginx进行压力测试的时候发现:如果把配置文件中event配置块中的accept_mutex开关打开(1.11.3版 ...

  2. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  3. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  4. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  5. nginx+php的使用

    原文来自:windows下配置nginx+php环境 按照他的步骤走,亲测可用! 但是这里他后面说的根目录可能有些人有点懵. 其实在设置的时候就设置了: 网站根目录就是www这个目录,如果没创建请自行 ...

  6. nginx的使用

    1.nginx的下载 解压后文件目录: 2.nginx的常用命令 nginx -s stop 强制关闭  nginx -s quit 安全关闭  nginx -s reload 改变配置文件的时候,重 ...

  7. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  8. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...

  9. nginx源码分析之模块初始化

    在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...

随机推荐

  1. 转:几款主流pcb软件比较

      原理图设计软件:会ORCAD就可以了,支持的Netlist超多,基本是业界标准. PCB Layout 软件 1.Protel,现在推AltiumDesigner.国内低端设计的主流,国外基本没人 ...

  2. MFC——9.多线程与线程同步

    Lesson9:多线程与线程同步 程序.进程和线程是操作系统的重点,在计算机编程中.多线程技术是提高程序性能的重要手段. 本文主要解说操作系统中程序.进程和线程之间的关系,并通过相互排斥对象和事件对象 ...

  3. Spring Resource框架体系介绍

    Resource介绍 在使用spring作为容器进行项目开发中会有很多的配置文件,这些配置文件都是通过Spring的Resource接口来实现加载,但是,Resource对于所有低级资源的访问都不够充 ...

  4. oracle中视图v$sql的用途

    1.获取正在执行的sql语句.sql语句的执行时间.sql语句的等待事件: select a.sql_text,b.status,b.last_call_et,b.machine,b.event,b. ...

  5. rtems 4.11 RTC驱动 (arm, beagle)

    RTC驱动的框架在 c/src/lib/libbsp/shared/tod.c 中,大部分功能都已经实现了,入口函数是 rtc_initialize(),BSP要实现的东西非常少. beagle的实现 ...

  6. linux uart驱动——相关数据结构以及API(二)

    一.核心数据结构      串口驱动有3个核心数据结构,它们都定义在<#include linux/serial_core.h>1.uart_driver     uart_driver包 ...

  7. redis数据迁移操作

    redis客户端连接命令,分别连接旧环境中的主从redis Src目录下./redis-cli -h IP -p PORT 使用info replication 命令找出主redis使用客户端命令连接 ...

  8. 不同特权级间代码段的跳转{ 门 + 跳转(jmp + call) + 返回(ret) }

    [0]写在前面 0.1)我们讲 CPU的保护机制,它是可靠的多任务运行环境所必须的: 0.2) CPU保护机制:分为段级保护 + 页级保护: 0.2.1)段级保护分为:段限长 limit 检查.段类型 ...

  9. 初识ASP.net-牛腩新闻公布系统

           在做牛腩新闻公布的系统的时候,总有一种感觉就是:我仍然在敲机房收费系统,唯一不同的一点.就是敲机房收费的时候,用户界面是是自己手动画界面.而,在牛腩新闻公布系统中,用户界面,却是须要自己 ...

  10. 不错的iOS相关的主页或站点 (更新于14-06-22)

    近期一直没事在翻一些站点看看资料学习下. 推荐几个不错的站点: http://www.raywenderlich.com/   这个站点有各种各样的教程,可惜是大部分都是英文教程,只是阅读起来还好.每 ...