2026年5月23日nginx-1.31.1 mainline version 正式发布。本次版本更新最核心的看点是修复了ngx_http_rewrite_module 中的缓冲区溢出漏洞 CVE-2026-9256。同时官方还同步带来了一系列围绕 HTTP/2、Mail、MP4 以及发布工作流的修复与改进。如果你正在关注 nginx 主线版本的安全性、稳定性和可维护性这次 1.31.1 版本非常值得认真看一遍。下面我将基于官方 release 信息和变更摘要完整梳理这次更新内容帮助你快速理解本次升级的重点。一、版本发布概览nginx-1.31.1 是 nginx 主线版本的一次更新发布时间为2026年5月23日。官方说明中明确指出这次发布修复了ngx_http_rewrite_module中的一个缓冲区溢出漏洞漏洞编号为CVE-2026-9256。从 release summary 来看本次更新包含发布工作流修正MP4 模块空指针相关处理HTTP/2 响应头长度限制Mail 模块错误路径修复Rewrite 模块安全加固Rewrite 模块缓冲区溢出修复版本号更新到 1.31.1从变更数量上看这次版本并不是大规模功能扩展而是非常典型的“安全修复 稳定性增强”版本。对于生产环境来说这类版本尤其重要因为它直接关系到运行安全和请求处理的可靠性。二、最重要的安全修复Rewrite 模块缓冲区溢出本次版本最关键的内容毫无疑问是Rewrite: fix buffer overflow with overlapping captures官方中文 changelog 中对应的描述是当使用 ngx_http_rewrite_module 的配置并且存在重叠捕获时工作进程中可能发生堆内存缓冲区溢出从而潜在导致任意代码执行CVE-2026-9256。这意味着什么简单说问题出现在 rewrite 相关处理逻辑中当配置里存在某些重叠捕获场景时可能会触发堆内存越界写入或越界访问最终导致程序异常严重时甚至可能被利用执行任意代码。对于 Web 服务器而言这类漏洞属于高危级别因此这次修复是整个 1.31.1 版本的核心。这次修复涉及什么变化从源码变更可以看到src/http/ngx_http_script.c做了多处调整主要集中在 rewrite 脚本执行与长度计算逻辑上1长度计算更严谨原逻辑中在计算缓冲区长度时对捕获内容和 URI 转义处理的长度统计进行了调整修复后采用了更安全的捕获数据长度来源避免在重叠捕获情况下出现错误长度计算。变更点包括计算e-buf.len时改用捕获数组中的长度差来累计对 URI 场景下的转义长度计算进行更准确的处理处理捕获数据时更加谨慎减少越界风险2增加e-is_args 0;在ngx_http_script_regex_start_code()中增加了e-is_args 0;这说明脚本执行上下文在进入某些正则处理后会显式重置参数状态避免后续字符串拼接或 URI 处理时沿用错误状态。3复杂值计算时传递le.is_args在ngx_http_script_complex_value_code()中新增le.is_args e-is_args;这意味着复杂值计算阶段现在会携带参数状态保证 URI、参数、转义等行为保持一致减少边界情况下的逻辑偏差。为什么这是必须重视的修复rewrite 模块广泛用于URL 重写路由跳转条件匹配参数拼接地址重定向也就是说它几乎是很多 nginx 站点的基础能力。一旦这里存在缓冲区溢出影响面会非常大。因此如果你的 nginx 配置中使用了 rewrite 规则尤其是复杂正则、捕获组、重写跳转、URI 拼接等逻辑那么这次升级应该优先考虑。三、HTTP/2限制响应头 Content-Type 和 Location 长度本次更新中src/http/v2/ngx_http_v2_filter_module.c也有明显调整主要是对 HTTP/2 响应头字段长度做限制。新增逻辑包括1限制 Content-Type 长度当r-headers_out.content_type.len超过NGX_HTTP_V2_MAX_FIELD时会记录严重日志并返回错误日志内容表示响应头值过长头字段示例为Content-Type2限制 Location 长度当r-headers_out.location-value.len超过NGX_HTTP_V2_MAX_FIELD时同样会记录严重日志返回错误这类修复的意义HTTP/2 响应头在传输和编码上有严格约束。如果头字段过长可能导致编码处理异常内存处理压力增加协议层兼容性问题非预期的请求失败本次修复的做法很直接在进入后续逻辑前先做长度检查避免异常头值继续向下传播。这类修改不改变正常场景的行为但能显著增强边界条件下的稳定性。对于采用 HTTP/2 的站点来说这属于非常典型且必要的健壮性修补。四、MP4 模块避免空指针参与比较或处理在src/http/modules/ngx_http_mp4_module.c中ngx_http_mp4_read()的判断条件做了调整。原先逻辑中相关判断只检查了缓冲区位置和结束位置的关系。现在改成了先确认mp4-buffer_pos非空再确认mp4-buffer_end非空然后再判断mp4-buffer_pos size mp4-buffer_end这说明了什么这类修改通常是为了避免在某些异常路径下对空指针做加法对空指针做比较或者在缓冲区尚未正确初始化时执行后续读取逻辑虽然这次没有被描述为安全漏洞但它明显是一个稳健性增强修复。对于涉及 MP4 处理的请求场景空指针问题往往会导致进程异常请求失败资源读取错误难以定位的偶发问题所以这个变更的目标很明确让 MP4 读取逻辑对空状态更安全减少异常路径下的错误行为。五、Mail 模块错误路径修复与会话清理优化这次更新中Mail 相关模块也有多处修复涉及src/mail/ngx_mail_imap_handler.csrc/mail/ngx_mail_pop3_handler.csrc/mail/ngx_mail_proxy_module.csrc/mail/ngx_mail_smtp_handler.c虽然这些修改看起来比较小但它们主要集中在错误路径处理和事件处理流程上非常关键。1IMAP 初始化会话读事件处理失败时关闭连接在ngx_mail_imap_init_session()中增加了判断如果ngx_handle_read_event(c-read, 0)失败则调用ngx_mail_close_connection(c)并直接返回这意味着 IMAP 初始化过程中如果读取事件无法正确挂载就不会继续向下走而是立刻关闭连接避免后续使用无效连接状态。2POP3 初始化会话同样增加失败退出在ngx_mail_pop3_init_session()中也采用了相同的处理方式读事件处理失败关闭连接返回这说明 IMAP 和 POP3 的初始化路径都被统一增强了错误处理逻辑。3Mail 代理写事件写事件处理失败时进入内部错误在ngx_mail_proxy_write_handler()中增加了如果ngx_handle_write_event(wev, 0)失败调用ngx_mail_proxy_internal_server_error(s)然后返回这表明 Mail 代理模块在写事件处理失败时不再继续执行后续逻辑而是直接走错误处理路径避免状态错乱。4SMTP greeting 处理逻辑修正在ngx_mail_smtp_greeting()中新增了读事件处理失败的判断失败则关闭连接并返回同时原有逻辑中还保留了如果c-read-ready则把读事件加入已投递事件队列如果sscf-greeting_delay存在则将读事件处理器设置为ngx_mail_smtp_invalid_pipelining并返回否则设置为ngx_mail_smtp_init_protocol从 diff 来看这里还存在一些格式与结构上的整理使 greeting 流程更清晰、更稳定。这些 Mail 修复的整体意义Mail 模块虽然不是所有 nginx 部署都在使用但一旦使用就要求连接处理极其稳定。这次更新把多个初始化与写事件路径上的失败处理补齐目标是避免无效连接继续运行避免事件挂载失败后程序进入不一致状态提高错误路径的可控性减少 Mail 服务在异常场景下的崩溃或行为异常六、发布工作流修正在.github/workflows/set-creation-date.yaml中做了一个很小但重要的修复原来的日期字段获取逻辑中Created at和Created At的写法存在差异更新后修正了工作流中对字段名称的匹配。这类修复的作用主要是让自动化流程更稳定避免字段名称不一致导致获取失败保障发布或项目管理流程正常运作虽然它不影响 nginx 运行时功能但对发行流程和仓库维护是有帮助的。七、版本号更新在src/core/nginx.h中版本号从1.31.0更新为1.31.1对应的内部版本数字也从1031000变为1031001这属于标准版本递增说明本次发布正式进入 1.31.1。八、官方变更摘要完整梳理根据 release summary本次更新的“What’s Changed”内容可以概括为以下几项修复 set-creation-date.yaml 工作流MP4避免添加或比较空指针HTTP/2限制 Content-Type 和 Location 响应头长度Mail修复错误路径Rewrite加强 escape flags 控制Rewrite修复重叠捕获导致的缓冲区溢出nginx-1.31.1-RELEASE如果按影响程度排序最重要的无疑是Rewrite 缓冲区溢出修复Rewrite 相关安全加固HTTP/2 响应头限制Mail 错误路径修复MP4 空指针防护九、这次更新的整体评价nginx 1.31.1 不是一个“功能爆发型”版本而是一个非常典型的“安全和稳定性修复型”版本。它的价值主要体现在以下几个方面1安全性显著提升CVE-2026-9256 是本次最核心的安全问题修复后能有效降低被利用风险。2边界处理更严格HTTP/2 对响应头长度限制、MP4 对空指针保护都说明 nginx 对异常输入的处理更成熟。3错误路径更健壮Mail 模块在初始化和写事件失败时的处理更加明确减少悬挂状态。4配置相关逻辑更稳妥Rewrite 模块是 nginx 配置能力的重要部分这次修复对于大量依赖重写规则的场景尤其重要。十、结语代码地址https://github.com/nginx/nginx总的来说nginx 1.31.1 是一个非常值得关注的主线版本。它不仅修复了ngx_http_rewrite_module中可能导致缓冲区溢出的高危问题还对 HTTP/2、MP4、Mail 等模块做了边界与错误路径修复同时也完善了发布工作流。