前言2026年7月18日nginx官方正式发布mainline主线版本nginx 1.31.3。作为全球使用最广泛的Web服务器与反向代理软件nginx的每一次版本迭代都牵动着数百万运维与开发者的目光。本次1.31.3版本更新尤为关键——一次性修复了三项已分配CVE编号的安全漏洞覆盖缓冲区溢出、内存泄露、释放后使用等高危风险类型同时带来了HTTP/2协议栈多项修复、上游代理能力增强、隧道机制改进、Perl模块重构等多达34次提交、42个文件变更的大规模更新。一、版本概览nginx 1.31.3属于mainline主线开发版本是nginx官方持续迭代新功能的分支。本次版本发布包含以下核心数据发布日期2026年7月18日版本类型mainline主线版提交总数34次变更文件42个贡献者12位安全漏洞修复3项均有CVE编号从提交时间线来看本次版本的开发周期从6月23日版本号提升开始持续到7月16日正式发布历时约三周。密集的提交集中在7月14日至7月15日大量安全修复与功能改进在这两天内合入主干体现了本次版本以安全加固为核心的发布基调。二、三大安全漏洞深度解析本次版本最受关注的无疑是三项安全漏洞的集中修复。这三个漏洞分别影响不同的nginx模块与使用场景风险等级均处于中高危区间建议受影响用户尽快评估并升级。2.1 CVE-2026-42533map指令正则缓冲区溢出漏洞漏洞描述当使用map指令配合正则表达式时存在缓冲区溢出漏洞。影响范围所有在配置中使用了map模块且map规则中包含正则表达式的nginx实例。技术背景map是nginx中非常常用的变量映射指令允许根据一个变量的值来设置另一个变量。当map的匹配规则中使用正则表达式通常以~开头时nginx需要对正则捕获的结果进行处理与存储。本次修复前相关代码在处理正则捕获结果时缺少足够的边界保护在特定构造的输入下可能发生缓冲区溢出潜在导致拒绝服务甚至远程代码执行。修复对应提交Script: buffer overrun protection脚本缓冲区溢出保护Script: buffer overrun protection in direct script usage直接脚本使用场景下的缓冲区溢出保护Access log: buffer overrun protection访问日志缓冲区溢出保护Script: simplified copy capture codes简化复制捕获代码Script: avoid garbage at the end of the result string避免结果字符串末尾出现垃圾数据Fixed uninitialized memory read caused by stale regex captures修复过期正则捕获导致的未初始化内存读取修复意义缓冲区溢出是历史悠久但危害巨大的漏洞类型。本次修复在脚本引擎、访问日志等多个路径上统一增加了缓冲区越界保护同时优化了正则捕获结果的复制逻辑从多个层面杜绝了越界写入的可能。2.2 CVE-2026-60005ngx_http_slice_module 内存泄露漏洞漏洞描述使用ngx_http_slice_module切片模块时存在内存泄露漏洞。影响范围启用了slice指令、使用切片模块进行大文件分片传输的nginx实例。技术背景slice模块用于将大文件请求拆分为多个子请求分段返回常用于视频流媒体、大文件下载等场景能够提升大文件传输的稳定性与缓存效率。该漏洞属于内存信息泄露类型攻击者可能通过精心构造的请求触发模块处理逻辑中的边界问题导致本不应返回的内存数据被泄露到响应中进而获取敏感信息。修复对应提交Add missing bounds check in ngx_http_compile_complex_value() 与 ngx_stream_compile_complex_value()在HTTP与流模块的复杂值编译函数中添加缺失的边界检查修复意义内存泄露漏洞虽然通常不直接导致代码执行但可能泄露服务器内存中的密钥、会话数据、用户请求信息等敏感内容在安全评估中同样属于高危范畴。边界检查的补充从源头阻断了越界读取的可能性。2.3 CVE-2026-56434ngx_http_ssi_module 释放后使用漏洞漏洞描述使用ngx_http_ssi_module服务器端包含模块时存在释放后使用Use-After-Free漏洞。影响范围启用了SSIServer Side Includes功能的nginx实例。技术背景SSI模块允许在HTML页面中嵌入指令由服务器在返回页面时动态执行并替换内容常用于在静态页面中插入动态元素如当前时间、文件大小、CGI输出等。释放后使用是一种典型的内存安全漏洞——当一块内存被释放后代码仍然持有指向该内存的指针并继续读写可能导致程序崩溃、数据篡改在特定条件下甚至可被利用实现远程代码执行。修复对应提交Avoid duplicate subrequest finalization避免重复的子请求终结处理修复意义SSI模块涉及子请求的创建与销毁生命周期管理复杂容易出现内存管理问题。本次修复通过消除重复的子请求终结操作确保内存只被释放一次从根本上解决了UAF风险。三、构建与配置系统优化3.1 loongarch64架构缓存行大小配置本次更新在构建配置中为loongarch64架构设置了专用的缓存行大小参数。龙芯架构作为国产自主指令集近年来在服务器领域的应用逐步增长。nginx作为基础软件针对不同CPU架构优化缓存行大小能够显著提升内存访问效率减少伪共享带来的性能损耗。这一变更体现了nginx社区对多元化架构生态的持续支持也为国产硬件平台上部署nginx提供了更好的原生性能基础。3.2 crypt()功能测试补充crypt.h头文件在configure脚本的crypt()功能检测中新增了对crypt.h头文件的包含。在部分较新的编译环境中crypt相关函数声明已从头文件中移除或需要显式包含特定头文件这一调整确保了在不同Linux发行版与编译器版本下configure脚本能正确检测crypt功能的可用性避免构建失败或功能缺失。这类构建系统的兼容性修复虽然不直接影响运行时功能但对于维护nginx在多样化环境下的可编译性至关重要。四、HTTP/2协议栈多项修复HTTP/2是nginx近年来持续投入优化的重点领域本次版本中又有多项与HTTP/2相关的修复与改进合入。4.1 CONTINUATION帧重叠memcpy问题的修复与回退关于HTTP/2 CONTINUATION帧中的重叠内存拷贝问题本次版本经历了一次修复与一次回退的完整过程。最初的修复提交尝试解决CONTINUATION帧处理中使用memcpy进行重叠内存区域拷贝的问题——memcpy在源地址与目标地址存在重叠时行为未定义可能导致数据损坏。但随后该修复被回退。这通常意味着修复方案引入了新的兼容性问题或性能回退需要进一步评估与重新设计。运维人员需要注意该问题的最终修复可能会在后续版本中以更完善的方案重新提交。4.2 HTTP/2 INITIAL_WINDOW_SIZE 保存状态修复修复了HTTP/2初始窗口大小在状态保存与恢复场景下的问题。HTTP/2采用流量窗口机制控制数据流传输速率初始窗口大小是连接建立时的重要参数。当连接存在状态保存与复用场景时初始窗口大小如果处理不当可能导致流量控制计算错误影响传输效率甚至引发协议异常。4.3 HTTP/2与gRPC上游响应头字段大小限制为HTTP/2上游与gRPC上游增加了响应头字段大小限制。gRPC底层基于HTTP/2响应头中可能携带大量元数据。增加大小限制能够防止异常上游返回超大响应头导致的内存消耗问题提升代理层的健壮性。这是典型的纵深防御思路——即使上游服务出现异常代理层也有兜底保护。4.4 缓存重新验证场景下HTTP/2上游发送修复修复了使用HTTP/2上游且缓存重新验证时的发送逻辑问题。当nginx作为反向代理使用缓存且缓存过期需要向上游重新验证时如果上游连接是HTTP/2协议特定条件下可能出现发送逻辑错误。该修复确保了缓存HTTP/2上游这一组合场景下的稳定运行。4.5 拒绝乱序伪头请求新增了对HTTP/2伪头顺序的严格校验拒绝乱序出现的伪头请求。根据HTTP/2协议规范以冒号开头的伪头如:method、:path、:scheme、:status必须出现在所有普通请求头之前。部分不规范的客户端可能违反这一约定发送请求此前nginx可能容忍此类请求。新增严格校验后不符合协议规范的请求将被直接拒绝。这一方面提升了协议合规性另一方面也能阻断某些利用协议解析差异进行的攻击如请求走私。4.6 拒绝头之后出现伪头的请求与上一条类似该项修复专门拒绝在普通请求头之后再次出现伪头的HTTP/2请求。正常情况下伪头只应在请求头块的最开始出现一次如果在普通头之后又出现伪头属于严重的协议违规。增加这一校验进一步收紧了HTTP/2协议解析的严格程度提升了安全性。五、安全加固相关改进除了三个正式CVE对应的修复外本次版本还有多处安全加固性质的改进属于主动防御范畴。5.1 XSLT模块默认禁用外部实体加载XSLT模块默认禁用外部实体加载同时新增了xml_external_entities配置指令用于显式控制该行为。XML外部实体注入XXE是一类经典的Web安全漏洞。当应用程序解析包含外部实体引用的XML时如果未禁用外部实体攻击者可构造恶意XML读取本地文件、发起内网请求、导致拒绝服务等。nginx的xslt模块用于对XML响应进行XSLT转换渲染如果允许加载外部实体就可能成为XXE攻击的入口。本次更新将默认行为调整为禁用外部实体大幅降低了默认配置下的安全风险同时提供配置指令供有真实业务需求的用户显式开启兼顾安全与灵活性。这是一次非常典型的安全默认改进——将更安全的选项设为默认值让大多数用户无需额外配置即可获得更好的保护。5.2 GitHub工作流显式设置权限在GitHub Actions工作流配置中显式声明了所需权限。GitHub近年来持续收紧工作流的默认令牌权限显式声明权限一方面符合最佳实践遵循最小权限原则另一方面也避免因平台默认策略变更导致工作流异常失败。这属于项目工程安全范畴的改进虽然不直接影响nginx运行时但对项目供应链安全有积极意义。5.3 字符集模块禁用首列为utf-8的charset_map字符集模块中禁用了首列为utf-8的charset_map配置。当charset_map的第一列源编码为utf-8时该映射表实际上没有存在的必要且可能引发处理逻辑异常。此项调整从配置层面消除了一类误用场景提升了模块的健壮性。六、上游代理能力增强上游代理是nginx作为反向代理最核心的功能之一本次版本在这一领域有多项功能新增与修复。6.1 Upgrade头处理优化改进了上游模块对Upgrade请求头的处理逻辑。Upgrade头用于HTTP协议升级最常见的场景是WebSocket连接——客户端通过Upgrade: websocket头请求将HTTP连接升级为WebSocket协议。此前nginx在代理包含Upgrade头的请求时存在特定场景下的处理问题。本次优化确保Upgrade头能够被正确识别并传递给上游提升了WebSocket代理等场景的兼容性与稳定性。6.2 上游套接字缓冲区大小配置指令新增了针对上游连接套接字的发送缓冲区与接收缓冲区配置指令覆盖HTTP代理与Stream代理两大模块HTTP模块新增指令proxy_socket_sndbuf设置上游HTTP连接的发送缓冲区大小proxy_socket_rcvbuf设置上游HTTP连接的接收缓冲区大小Stream模块新增指令proxy_socket_sndbuf设置上游TCP流连接的发送缓冲区大小proxy_socket_rcvbuf设置上游TCP流连接的接收缓冲区大小技术意义套接字缓冲区大小直接影响网络传输性能。发送缓冲区SO_SNDBUF决定了内核中为该套接字排队待发送的数据量上限接收缓冲区SO_RCVBUF决定了可缓存的已接收数据量上限。在高带宽、高延迟的网络环境中如跨地域数据中心通信适当增大缓冲区能够显著提升吞吐量。此前nginx只能通过操作系统全局参数调整所有套接字的缓冲区大小粒度较粗。新增的指令允许针对不同的上游server或location分别配置提供了更精细的性能调优手段。对于大文件传输、流媒体代理、跨地域反向代理等场景这一功能具有很高的实用价值。6.3 出站对等连接支持SO_SNDBUF在事件模块层面为出站对等连接增加了SO_SNDBUF套接字选项的支持。这是上述缓冲区配置指令能够生效的底层基础——只有事件层支持设置该选项上层模块的配置才能真正应用到套接字上。该项变更属于底层基础设施铺垫为更多场景下的缓冲区调优打下了基础。七、隧道机制改进HTTP CONNECT隧道是nginx的另一重要应用场景常用于正向代理中建立端到端的TCP隧道。本次版本对隧道相关逻辑进行了多项改进。7.1 忽略CONNECT请求体新增逻辑处理HTTP CONNECT请求时忽略请求体。根据HTTP协议规范CONNECT方法用于建立隧道请求本身不应携带请求体。但部分不规范的客户端可能在CONNECT请求中附带body此前的处理逻辑可能因此出现异常。忽略请求体的处理方式确保了即使客户端附带了多余数据nginx也能正确建立隧道连接提升了兼容性。7.2 拒绝携带请求体的HTTP CONNECT请求与上一项配合新增了对携带请求体的CONNECT请求的拒绝逻辑。对于明显违反协议规范、携带请求体的CONNECT请求nginx将直接拒绝而非尝试忽略处理。这是更严格的协议合规处理有助于防止利用CONNECT请求体进行的各类攻击尝试。7.3 禁用HTTP CONNECT请求的长连接对HTTP CONNECT请求禁用HTTP keepalive长连接机制。CONNECT请求建立隧道后连接进入透明转发模式不再遵循HTTP协议的请求-响应模式此时HTTP层面的keepalive机制已无意义且可能引入状态混乱。禁用长连接确保了CONNECT隧道的连接状态管理更加清晰可靠。八、Perl模块多项修复Perl模块允许在nginx配置中嵌入Perl脚本实现复杂逻辑是扩展nginx能力的重要途径。本次版本对Perl模块进行了一系列底层重构与稳定性修复。8.1 新增处理器类型检查为Perl处理器增加了类型校验。不同类型的Perl处理器如内容处理器、访问控制处理器、日志处理器等有不同的调用约定与返回值要求缺少类型检查时错误配置的处理器可能导致运行时异常甚至崩溃。新增类型检查能够在配置加载阶段就发现问题提前报错提升了配置安全性。8.2 Perl标量引用计数机制引入了Perl标量scalar的引用计数管理。Perl本身基于引用计数进行内存管理但在nginx与Perl交互的边界上对象生命周期容易出现管理混乱。引入显式的引用计数机制确保nginx侧持有Perl对象时对象不会被意外回收释放时能正确递减计数从根本上减少了内存泄漏与悬垂指针问题。8.3 请求对象校验增加了Perl请求对象的有效性校验。在Perl脚本执行过程中对应的nginx请求对象可能因各种原因如连接断开、子请求结束等已被销毁此时如果Perl代码继续访问该对象将触发未定义行为。新增的有效性校验在每次访问前检查请求对象是否仍然有效避免访问已销毁对象导致的崩溃。九、SSL模块内存泄漏修复修复了ngx_ssl_get_ech_outer_server_name()函数中的内存泄漏问题。ECHEncrypted Client Hello是TLS 1.3的重要扩展用于加密TLS握手过程中的Server Name IndicationSNI信息进一步提升隐私保护。ngx_ssl_get_ech_outer_server_name函数负责获取ECH外层加密的服务器名称。该函数在特定执行路径下存在内存分配后未正确释放的问题长期运行可能导致内存占用持续增长。本次修复堵住了这一内存泄漏点对于启用了ECH功能的站点升级后内存使用将更加稳定。十、IPV6_DONTFRAG套接字选项修复修复了IPV6_DONTFRAG套接字选项的设置问题。IPV6_DONTFRAG选项用于控制IPv6数据包是否允许在传输路径上被分片。设置该选项后超过路径MTU的数据包将被丢弃并返回ICMPv6数据包过大错误而不是被中间路由器分片。这对于某些对延迟敏感或依赖PMTU发现的应用场景很重要。修复前该选项可能未被正确应用到套接字上导致配置不生效。修复后相关指令能够正确控制IPv6分片行为。十一、完整变更清单梳理为方便读者快速查阅以下按模块分类整理本次版本的全部变更项构建与配置类为loongarch64架构设置缓存行大小configure脚本的crypt()检测增加crypt.h头文件包含GitHub工作流显式声明权限安全漏洞修复类修复map配合正则时的缓冲区溢出漏洞CVE-2026-42533修复slice模块内存泄露漏洞CVE-2026-60005修复SSI模块释放后使用漏洞CVE-2026-56434XSLT模块默认禁用外部实体加载新增xml_external_entities指令脚本引擎多处缓冲区溢出保护加固访问日志缓冲区溢出保护修复过期正则捕获导致的未初始化内存读取HTTP/2协议类修复CONTINUATION帧重叠memcpy后回退修复INITIAL_WINDOW_SIZE保存状态问题限制HTTP/2与gRPC上游响应头字段大小修复缓存重新验证场景下HTTP/2上游发送问题拒绝乱序伪头请求拒绝普通头之后出现伪头的请求上游代理类优化Upgrade头处理新增HTTP上游proxy_socket_sndbuf与proxy_socket_rcvbuf指令新增Stream上游proxy_socket_sndbuf与proxy_socket_rcvbuf指令事件层支持出站连接SO_SNDBUF设置隧道与连接类CONNECT请求忽略请求体拒绝携带请求体的CONNECT请求CONNECT请求禁用HTTP keepalive模块修复类字符集模块禁用首列为utf-8的charset_mapPerl模块新增处理器类型检查Perl模块引入标量引用计数Perl模块增加请求对象校验SSL模块修复ngx_ssl_get_ech_outer_server_name内存泄漏修复IPV6_DONTFRAG套接字选项设置避免重复的子请求终结处理脚本简化复制捕获代码脚本避免结果字符串末尾垃圾数据十二、升级建议基于本次版本的变更内容给出以下分级升级建议紧急升级建议72小时内完成配置中使用了map正则且nginx对外直接暴露的实例启用了slice模块提供大文件或流媒体服务的实例启用了SSI模块且允许用户上传或影响页面内容的实例启用了xslt模块处理不可信XML输入的实例以上场景直接对应本次修复的安全漏洞存在被远程利用的风险建议优先升级。计划内升级建议下个维护窗口完成使用HTTP/2作为上游协议的反向代理实例使用WebSocket代理、依赖Upgrade头处理的实例启用了Perl模块运行自定义脚本的实例启用了ECH加密客户端问候的站点对上游连接缓冲区有调优需求的高吞吐代理这些场景对应的修复与新功能能够提升稳定性或提供新的调优手段属于收益明确的常规升级。可观察暂缓纯静态文件服务、配置简单、不使用上述模块的内网实例对稳定性要求极高、当前版本运行无异常的核心业务这类场景可以等待社区反馈或下一个稳定版本再行升级。十三、总结代码地址github.com/nginx/nginxnginx 1.31.3是一次以安全加固为核心、同时伴随多项功能增强的重要更新。三项CVE漏洞的集中修复提醒我们即使是久经考验的基础软件在模块组合与边界场景下仍可能出现安全问题及时跟进补丁是运维工作的必修课。功能层面上游套接字缓冲区配置的新增为性能调优提供了更精细的工具HTTP/2协议栈的持续修复与加固体现了nginx对新一代HTTP协议的重视XSLT默认禁用外部实体、严格校验HTTP/2伪头等改进则贯彻了安全默认的设计理念让普通用户无需深入配置也能获得更安全的默认体验。