nginx 1.29.6 发布:主线版本重大更新,新增上游“粘性会话”支持,性能与稳定性全面提升



2026 年 3 月 11 日,nginx 官方发布了最新主线版本 nginx 1.29.6。本次版本更新不仅在功能和安全性上进行了大量细致优化,还正式引入了“上游粘性会话(sticky sessions)”功能,这是对负载均衡能力的里程碑式增强。除了这一重量级改进外,HTTP/2、QUIC、SCGI、IMAP、MP4、Resolver 等模块也都有实质性的修复与提升。本文将详细解读此次更新的全部技术细节与影响。
一、版本基本信息
- 版本号:nginx 1.29.6
- 发布时间:2026 年 3 月 11 日
- 版本类型:mainline(主线版本)
- 发布来源:github.com/nginx/nginx 与 nginx.org 官方同步
此次更新共计:
- 有 12 位核心贡献者参与
- 提交 31 次 commit
- 修改 37 个文件
这显示出该版本不仅是一次常规维护更新,更是针对新网络协议及负载均衡机制的大幅度增强,体现出 nginx 持续深耕核心性能的方向。
二、总体更新概要
nginx 1.29.6 的更新涵盖了多个层面,从代理层、协议支持、会话保持到媒体流处理、解析器与安全机制都有重要改动。
官方更新摘要如下:
- 版本号更新
- 修复了启用缓存的 HTTP/2 上游代理问题
- 改进了多值请求头的解析分隔符处理
- 修复了 SCGI 模块在非缓冲模式下传递 CONTENT_LENGTH 的问题
- MP4 模块增加了同步样本值验证
- 修复了解析器 ngx_resolver_copy() 的越界读取问题
- QUIC 无状态重置(Stateless Reset)机制改进
- 兼容新版 Linux 内核的 BPF 编译问题修复
- 欢迎页内容更新,添加更多相关链接
- QUIC 模块实现工作进程绑定的无状态重置令牌
- QUIC 模块增加了兼容层错误回调处理
- 构建系统支持跳过 F5 CLA 工作流选项
- IMAP 邮件模块多个漏洞修复
- 上游模块新增“粘性会话(sticky sessions)”功能
- 同步更新 zlib(Windows 构建使用)
- 修复若干拼写错误与小问题
这些更新将 nginx 的上游连接管理、QUIC 传输层安全逻辑、媒体流验证、请求头处理等重要环节全面优化,使得本版本在稳定性、兼容性和负载均衡智能性方面都有显著增强。
三、核心更新详解
1. 上游模块新增“粘性会话(sticky sessions)”支持
这是本次发布的最重要更新。
粘性会话(sticky sessions)功能允许 nginx 在多台后端服务器之间进行请求分配时,能够保持来自同一用户的会话始终转发到同一台后端。这对于使用会话状态(如登录状态、购物车信息等)的 Web 应用至关重要。
新的粘性机制不仅实现了基本的“持久路由”,还引入了多个增强特性:
- learn 模式:nginx 可自动学习用户会话与后端实例的对应关系,实现自适应会话绑定。
- draining 状态:在后端服务器下线或维护时,支持平滑退出会话而不影响在线用户。
- cookie 属性增强:支持
httponly、secure属性以增强安全性。 - cookie 域名支持变量化:可以通过变量动态设置 cookie 域名,以适应多站点或多子域架构。
- max-age 支持:cookie 可添加过期时间控制,提升会话生命周期精度。
- header 参数支持:允许在 learn 模式下从请求头中学习绑定信息。
- SameSite 属性支持:支持
strict、lax、none三种模式,应对跨域安全需求。 - 会话重载修复:修复了在 nginx 配置重载后学习到的会话失效问题。
这些更新意味着 nginx 的负载均衡器在企业级应用场景下的稳定性与用户体验都将显著提升,适用于高并发、高状态依赖的业务系统。
2. Proxy 模块:修复启用缓存时的 HTTP/2 上游问题
代理模块在启用缓存同时使用 HTTP/2 协议的场景中,以往存在请求处理异常或响应丢失的问题。新版本已修复该问题,使得在多维缓存与 HTTP/2 双重特性同时启用时仍能保持数据一致性与稳定高效传输。
这对需要利用 HTTP/2 多路复用能力的反向代理场景至关重要,如微服务架构、跨节点静态资源缓存分发等。
3. 请求头解析改进:多值 header 的分隔符修复
nginx 修复了在处理含多个值的请求头时,分隔符解析错误的情况。
这可避免 HTTP 请求中多值头(如 Cache-Control、Accept-Encoding)被错误拆分的问题,提高代理与后端通信的兼容性与稳定性。
4. SCGI 模块修复:CONTENT_LENGTH 非缓冲传递问题
SCGI 模块在非缓冲模式(unbuffered)下对 CONTENT_LENGTH 头的处理存在误传问题。新的版本已修复该逻辑,确保 CGI 应用在不缓冲输入流的场景下仍能准确获取请求体长度。
此改进对某些需要实时读取输入的后端应用尤为重要,如流式上传接口、持续输入脚本等。
5. MP4 模块增强:同步样本值验证
MP4 模块现在会验证 stss atom(同步样本表)中的值。此前若该表中含无效或越界数据,可能导致视频播放异常或解析失败。
此修复使 nginx 的视频分发模块更加稳定,对使用 nginx 作为媒体 CDN 节点的场景具有积极影响。
6. Resolver 修复:越界读取问题
修复了 ngx_resolver_copy() 函数中的 off-by-one 读取错误。
该问题可能在 DNS 解析或缓存复制过程中导致少量内存越界,现在已彻底解决,以保障内存安全性与稳定运行。
7. QUIC 模块全面优化
QUIC 模块在本次版本中得到了系统性改进,包括安全性、性能与兼容性方面的细节调优。
主要更新包括:
- Stateless Reset 改进:调整最小包大小、限制重置包长度、重构地址哈希逻辑、增加速率限制机制。有效防止过多重置包引发潜在资源滥用问题。
- Linux 内核兼容修复:解决新版内核下 BPF 编译失败的情况,提升版本兼容性。
- 工作进程绑定令牌:每个 worker 绑定独立的 stateless reset token,增强安全隔离。
- OpenSSL 兼容层错误回调处理:改善处理 keylog 错误的逻辑,提高稳定性与错误可追踪能力。
通过这一系列优化,QUIC 在 nginx 主线版本中的实现已更为成熟与可用于生产环境。
8. 邮件模块(Mail)修复增强
邮件代理模块针对 IMAP 协议做出两项关键修复:
- 更严格的字面量验证:防止 IMAP 请求中不合法的字面量数据导致逻辑异常。
- 修复类型溢出问题:修复 IMAP 字面量长度解析中的类型溢出,确保大数据邮件场景安全稳定。
这些改进使 nginx 在作为邮件代理或网关时更符合协议规范,减少潜在风险。
9. 欢迎页更新与构建改进
- 默认欢迎页面更新:增加官方链接与更多文档入口,让新用户能更快了解 nginx 最新资源。
- Windows 构建更新:升级使用的 zlib 库版本,确保压缩模块在 Windows 环境下运行更稳定。
- 构建系统添加可跳过 F5 CLA 工作流选项:为企业或社区构建简化流程。
10. 其他小更新与修复
- 版本号上调以标识所有新改动。
- 修复文档与源代码中的若干拼写错误,提高代码整洁度。
- 优化部分宏定义与状态管理逻辑,使代码层级更明确、更易维护。
这些看似微调的细节其实是 nginx 长期高质量代码维护体系的重要体现。
四、多模块协同改进的意义
从上述所有更新可以看到,nginx 1.29.6 不仅是一次简单的补丁发布,更是一次全栈式的功能深化。
它在以下几方面影响深远:
- 负载均衡能力
新的粘性会话机制彻底解决了传统 nginx 在有状态业务中的瓶颈问题。 - 协议支持层面
HTTP/2 与 QUIC 的同时强化,使 nginx 能更好应对现代浏览器与多路复用场景。 - 内容传输稳定性
从 MP4 到 SCGI,修复内容长度与同步验证,大幅提升流媒体与数据交互可靠性。 - 系统安全与稳定性
Resolver 越界修复、IMAP 验证增强、QUIC 安全令牌隔离等,都在底层保证了安全运行。 - 开发友好性
新构建选项与更新后的欢迎页让开发者体验进一步优化。
这使得 nginx 1.29.6 成为可以放心部署在生产环境中的主线新版本。
五、总结与升级建议
nginx 1.29.6 是一次极具价值的更新,尤其适合以下场景升级使用:
- 对用户会话保持敏感的系统(如电商、社交、后台管理系统)
- 采用 HTTP/2 或 QUIC 的高并发网站
- 使用 nginx 作为媒体服务分发节点的应用
- 需要更稳定 DNS 与邮箱代理能力的服务
在升级时建议:
- 备份原有配置文件
- 若涉及负载均衡场景,评估是否启用新粘性模式
- 确认第三方模块与新版本兼容性
- 更新后进行功能性回归测试,尤其代理与缓存功能
六、未来展望
代码地址:github.com/nginx/nginx
此次主线版本的发布标志着 nginx 向智能化与安全化负载均衡迈出关键一步。随着 QUIC、HTTP/3 的逐步标准化,nginx 很可能在接下来的 1.30 系列进一步完善 QUIC 连接管理和会话学习机制,为大规模分布式架构提供更稳健的内核。