2026年10月22日,nginx 1.31.8 主线版本正式发布。本次版本对应 release-1.31.8,官方变更可参考 nginx.org 提供的 CHANGES 文件。
从发布信息看,nginx 1.31.8 涉及 HTTP/3、SSL、Win32、控制接口、Dav、JSON 解析器、核心工作目录处理、Windows 压缩包生成流程以及构建工作流等多个部分。发布页面显示,本次版本共有 11 位贡献者参与,包含 21 个提交,涉及 52 个文件变更。
虽然本次发布没有单一的大功能描述,但修复范围较广,重点集中在边界场景、跨平台兼容性、底层接口可移植性、编码行为以及构建流程完善等方面。
一、版本发布信息
本次发布版本为:
- release-1.31.8
- nginx 1.31.8 mainline version
- 发布时间:2026年10月22日
- 提交数量:21
- 文件变更数量:52
- 贡献者数量:11
发布页面同时提供了分支变更比较入口,可以选择两个分支查看变更,也可以据此发起新的拉取请求,并提供差异比较相关功能。
本次最终发布提交为:
- nginx-1.31.8-RELEASE
此外,发布过程中还包含版本号更新:
- Version bump
二、HTTP/3 相关修复:处理空编码器字段值与内存对齐问题
HTTP/3 是本次更新中较为集中的部分之一,涉及编码器字段值以及 Huffman 编码过程。
第一项改动是:
- HTTP/3: avoid undefined behaviour with empty encoder field values
该改动用于避免编码器字段值为空时出现未定义行为。空字段值本身属于容易被忽略的边界情况,而本次修复明确覆盖了这一场景。
第二项改动是:
- HTTP/3: avoid unaligned stores in Huffman encoding
这一修改聚焦 Huffman 编码过程中的非对齐存储问题。此次发布将其单独列为 HTTP/3 相关修复,说明该问题位于编码实现路径中。
从提交时间看,空编码器字段值相关修复出现在 2026年10月15日;Huffman 编码的非对齐存储修复出现在 2026年10月20日。两项修改共同构成了本次版本对 HTTP/3 编码处理的主要更新内容。
三、Win32 平台调整:移除 iocp 事件模块及未使用指针
nginx 1.31.8 对 Win32 平台进行了清理和调整,主要包含两项内容。
第一项是:
- Win32: removed the iocp event module
该改动移除了 iocp 事件模块。
第二项是:
- Win32: removed unused winsock extension function pointers
该改动移除了未使用的 Winsock 扩展函数指针。
两项 Win32 变更均出现在 2026年10月15日。从变更说明可以看到,本次调整既包括事件模块层面的移除,也包括未使用扩展函数指针的清理。
四、控制接口更新:记录已接受套接字配置错误
控制接口相关更新主要包括错误记录以及 ioctl 调用的可移植性调整。
第一项改动是:
- Control: logged errors from accepted socket setup
该项修改用于记录已接受套接字配置过程中的错误。
对应的提交说明为:
- Control API: log errors from accepted socket setup
这意味着,在已接受套接字的设置过程中,相关错误会被记录下来。
第二项改动是:
- Control API: use more portable ioctl(FIOASYNC)
该更新将控制接口中的 ioctl(FIOASYNC) 调用调整为更具可移植性的方式。
与此同时,还有一项核心层面的配套修复:
- Core: fixed ioctl(FIOASYNC) argument type
该修改修正了 ioctl(FIOASYNC) 的参数类型。
控制接口与核心层面的这两部分改动同时出现,分别覆盖错误记录、接口调用可移植性以及参数类型处理。
五、Dav 模块修复:目标映射错误时恢复请求 URI
Dav 模块在本次版本中包含一项明确修复:
- Dav: restored the request URI on a destination mapping error
该修改用于在 destination 映射出错时恢复请求 URI。
从变更描述来看,这一问题发生在 destination 映射错误场景。nginx 1.31.8 对此进行了恢复请求 URI 的处理。
六、SSL 相关修复:内核 TLS 关闭后的 EIO 与会话编码返回值
SSL 部分包含两项修复,分别涉及内核 TLS 关闭后的 EIO 处理,以及 SSL 会话编码函数的负值返回问题。
第一项是:
- SSL: ignored EIO after shutdown with kernel TLS
该改动用于在使用内核 TLS 时,忽略 shutdown 之后出现的 EIO。
第二项是:
- SSL: workaround for i2d_SSL_SESSION() negative values
该修改为 i2d_SSL_SESSION() 出现负值的情况提供了处理方案。
这两项变更均在 2026年10月15日的提交中出现,属于本次 nginx 1.31.8 对 SSL 处理路径的主要修复内容。
七、Priority 解析修复:解决 32 位平台大整数问题
本次版本包含一项与 Priority 解析有关的修复:
- Fixed Priority parsing of large integers on 32-bit platforms
该修改用于修复 32 位平台上解析大整数时的 Priority 问题。
变更说明明确限定了两个条件:
- 32 位平台
- 大整数解析
因此,该项修复针对的是特定平台环境下的大整数处理场景。
八、JSON 解析器调整:字符串反转义与事件报告方式变化
JSON 是 nginx 1.31.8 中变更较多的模块之一。发布摘要中将其概括为:
- JSON: parser API refactoring
对应提交包含两项具体调整。
第一项是:
- JSON: modified ngx_json_unescape_string() to unescape into a new buffer
该修改调整了 ngx_json_unescape_string() 的处理方式,使其将反转义结果写入新的缓冲区。
第二项是:
- JSON: report escaped strings as separate parser events
该修改使已转义字符串以独立的解析器事件形式进行报告。
这两项 JSON 更新都出现在 2026年10月17日。结合发布摘要中的“parser API refactoring”描述,本次调整集中于 JSON 解析器接口、字符串反转义输出方式以及转义字符串事件报告方式。
九、核心工作目录处理:相对 prefix 与校验逻辑
核心部分在 2026年10月21日包含两项与 working_directory 有关的提交。
第一项是:
- Core: working_directory relative to prefix
该修改涉及 working_directory 相对于 prefix 的处理。
第二项是:
- Core: working_directory validation
该修改涉及 working_directory 的校验。
发布摘要中对此进行了概括:
- working_directory fixes
这两项变更分别覆盖工作目录与 prefix 的相对关系,以及工作目录本身的验证逻辑。
十、构建与发布流程:Windows zip、GNU sed 与构建工作流
除了运行时模块与核心逻辑外,nginx 1.31.8 还更新了构建、打包和自动化工作流相关内容。
第一项是 Windows 压缩包生成流程:
- GH: workflow to generate windows zip
该修改增加了用于生成 Windows zip 的工作流。
第二项是构建工作流中的身份令牌与机密传递:
- GH: request an id token and pass secrets to a callee in buildbot.yml
该变更涉及 buildbot.yml,其中包括请求 id token,并将 secrets 传递给被调用方。
第三项是 zip 目标兼容性修复:
- Misc: fixed “zip” target with GNU sed
该修改修复了在 GNU sed 环境下的 zip 目标问题。
以上三项构建与发布相关更新均出现在 2026年10月20日,分别涉及 Windows 压缩包生成、构建工作流中的令牌与机密传递,以及 GNU sed 下的 zip 目标处理。
十一、其他修改:修正拼写错误
本次发布还包含一项简单修正:
- Fixed a typo
对应提交说明为:
- Fixed a typo
该提交出现在 2026年10月20日。
十二、按时间梳理 nginx 1.31.8 的提交内容
为了更清楚地查看本次版本演进过程,下面按提交日期整理相关变更。
2026年10月15日
当天的提交包括:
- Version bump
- HTTP/3:避免空编码器字段值导致未定义行为
- Win32:移除 iocp 事件模块
- Win32:移除未使用的 Winsock 扩展函数指针
- 控制接口:记录已接受套接字设置过程中的错误
- Dav:destination 映射错误时恢复请求 URI
- SSL:使用内核 TLS 时忽略 shutdown 后的 EIO
- SSL:处理 i2d_SSL_SESSION() 的负值情况
- 控制接口:使用更具可移植性的 ioctl(FIOASYNC)
- 核心:修正 ioctl(FIOASYNC) 参数类型
- 修复 32 位平台上大整数的 Priority 解析问题
2026年10月17日
当天的提交集中于 JSON:
- 修改 ngx_json_unescape_string(),将反转义结果写入新的缓冲区
- 将已转义字符串报告为独立的解析器事件
2026年10月20日
当天的提交包括:
- 修正拼写错误
- 增加生成 Windows zip 的工作流
- 在 buildbot.yml 中请求 id token,并将 secrets 传递给被调用方
- 修复 GNU sed 环境下的 zip 目标
- HTTP/3:避免 Huffman 编码中的非对齐存储
2026年10月21日
当天的提交集中于 working_directory:
- working_directory 相对于 prefix 的处理
- working_directory 校验
此外,还包含最终版本发布提交:
- nginx-1.31.8-RELEASE
发布页面显示,该最终发布提交在页面生成时为约 18 小时前完成。
十三、nginx 1.31.8 更新内容总览
综合本次发布信息,nginx 1.31.8 的更新可以归纳为以下几个方向:
- HTTP/3 编码边界处理与内存对齐处理
- Win32 平台模块和未使用函数指针清理
- 控制接口的错误记录与 ioctl 调用可移植性
- Dav destination 映射错误时的请求 URI 恢复
- SSL 中内核 TLS 关闭后 EIO 的处理,以及 SSL 会话编码负值处理
- 32 位平台大整数 Priority 解析修复
- JSON 解析器 API 调整、反转义缓冲区调整与转义字符串事件调整
- working_directory 相对 prefix 的处理与校验
- Windows zip 生成、GNU sed 下 zip 目标修复、构建工作流令牌与机密传递调整
- 拼写修正
- nginx-1.31.8 正式发布
十四、结语
代码地址:github.com/nginx/nginx
nginx 1.31.8 作为主线版本,覆盖了 HTTP/3、SSL、Win32、控制接口、Dav、JSON、核心工作目录和构建发布流程等多个方向。
其中,HTTP/3 包含空编码器字段值未定义行为修复,以及 Huffman 编码非对齐存储修复;SSL 包含内核 TLS 关闭后 EIO 处理和 i2d_SSL_SESSION() 负值处理;JSON 则围绕解析器 API、字符串反转义和解析事件进行了调整。
同时,Win32 平台移除了 iocp 事件模块及未使用的 Winsock 扩展函数指针,控制接口补充了已接受套接字设置错误记录,并对 ioctl(FIOASYNC) 的可移植性和参数类型进行了调整。构建侧则增加 Windows zip 生成工作流,修复 GNU sed 下的 zip 目标,并更新 buildbot.yml 中的 id token 与 secrets 传递方式。