nginx 1.31.8 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.8
HTTP/3 还需要发布 UDP 端口,而不只是 TCP 端口:docker run -d -p 80:80 -p 443:443 -p 443:443/udp codeitus/nginx
主要变更:
- 内部 API 变更:现在 JSON 解析器会把包含转义序列的字符串作为独立事件报告,并且 ngx_json_unescape_string() 函数会把字符串解码到单独的缓冲区中。
- 变更:现在在指令 “working_directory” 中指定的路径相对于 nginx 前缀目录,而不是相对于当前目录。
- Bugfix:如果在指令 “working_directory” 中指定了无效目录,worker 进程会在启动时或重新配置过程中退出。
- Bugfix:在具有严格对齐要求的平台上使用 HTTP/3 时,worker 进程可能在 SIGBUS 信号下异常终止。
- Bugfix:如果使用 OpenSSL 3.2.0 或更新版本且启用了 kernel TLS,那么在关闭 SSL 连接时日志中可能会出现 “recv() failed (5: Input/output error)” 警报。
- Bugfix:如果使用了
--with-control-api选项,则无法在 Solaris 上构建 nginx。
