nginx 1.31.7 Mainline 已新增到 CodeIT 仓库,支持 HTTP/3。http2 和 ngx_cache_purge 已内置,并且 OpenSSL 动态链接官方 OpenSSL 4.0.3,支持 QUIC。Google 的 Brotli 压缩模块和 ngx_http_geoip2 以动态模块形式提供,位于 nginx-module-brotli 和 nginx-module-geoip2 软件包中,两者均为可选,与其余 nginx-module-* 模块一样。这些软件包适用于 RHEL、CentOS、AlmaLinux、Rocky Linux 和 Oracle Linux 7、8、9 和 10,以及 Ubuntu 22.04 和 24.04。
本次更新修复了安全漏洞,建议尽快升级。
其余动态模块单独打包,可按需安装:nginx-module-lua(配合 lua-resty-core 和 lua-resty-lrucache)、nginx-module-acme(自动申请 ACMEv2 证书)、nginx-module-njs、nginx-module-perl、nginx-module-xslt 和 nginx-module-image-filter。每个软件包都会在 /etc/nginx/modules-enabled 中写入自己的 load_module 指令,安装后即可生效,无需手动修改 nginx.conf。Lua 和 ACME 为 EL9、EL10 和 Ubuntu 构建;EL7 改为提供 nginx-module-geoip,而 njs、Perl、XSLT 和 image-filter 仅有 rpm 版本。
同一版本也发布到 Docker Hub 的 codeitus/nginx:镜像基于 AlmaLinux 9,由这些软件包构建,并同时提供 amd64 和 arm64:
- 最新镜像,来自最后发布的那个分支:docker pull codeitus/nginx
- 最新的 Mainline 镜像:docker pull codeitus/nginx:mainline
- 本次发布的确切版本:docker pull codeitus/nginx:1.31.7
HTTP/3 还需要发布 UDP 端口,而不只是 TCP 端口:docker run -d -p 80:80 -p 443:443 -p 443:443/udp codeitus/nginx
主要变更:
- Feature: ngx_http_geoip_module 和 ngx_stream_geoip_module 现在支持 MaxMind DB(MMDB)格式的数据库。
- Feature:现在可以按 IP 地址验证后端 SSL 证书。
- Feature:使用指令 “quic_bpf” 时,QUIC 现在支持重新配置和二进制升级。
- Change:ngx_http_v2_module 现在使用 RFC 9218 的优先级方案,并忽略 RFC 7540 的优先级信号。
- Bugfix:如果缓存了 “X-Accel-Redirect” 标头行,随后将缓存的响应提供给客户端,可能会在工作进程中发生段错误,或在日志中出现 “request count is zero” 告警。
- Bugfix:如果使用 ngx_http_dav_module 在带有 “alias” 指令的 location 中处理 COPY 和 MOVE 方法,可能会在工作进程中发生段错误。
- Bugfix:如果将 “http3_stream_buffer_size” 指令设置为较小的值,QUIC 连接可能会以日志中的 “quic flood detected” 消息关闭;该问题曾在 1.27.5 中出现。
- Bugfix:在不发送 close_notify 的情况下关闭 SSL 连接会被视为正常关闭,包括连接被重置的情况;现在在这种情况下日志中会出现 “SSL_read() failed” 错误。
- Bugfix:当在从 SSL 连接读取时发生错误,日志中可能出现 “[crit] SSL_write() failed” 消息。
修复的漏洞:
- Security:如果请求 URI 通过 “rewrite” 指令被修改,然后再映射到文件路径,使用 “alias” 指令时可能会在工作进程中发生缓冲区溢出(CVE-2026-15176)。
- Security:在对带有变量的字符串表达式进行求值时,可能会在工作进程中发生缓冲区溢出,从而影响 http 和 stream 模块中的文档根目录计算以及请求日志记录(CVE-2026-93479)。
- Security:使用 HTTP/3 时,未知帧的一部分可能会被当作请求正文处理,从而可能绕过 “client_max_body_size” 限制,或向代理请求中注入数据(CVE-2026-95101)。
- Security:使用 TLS 会话票据密钥轮换时,其中一个密钥未初始化,这可能允许伪造会话(CVE-2026-97629)。
- Security:使用异步文件 I/O(AIO)时,如果 SSI 页面包含 “include virtual” 命令,在某些配置中可能会发生 use-after-free(CVE-2026-97205)。
