NGINX 1.30.0 稳定版:sticky cookie 会话保持开源,上游代理默认改成 HTTP/1.1
NGINX 1.30.0 稳定版已于 2026-04-14 发布,把 1.29.x 主线分支的新特性和修复合并了进来。这一版最值得关注的两处变化:一是 Plus 里才有的 sticky cookie 会话保持正式进开源,二是代理到上游时默认使用 HTTP/1.1 并默认启用 keepalive。
相关信息:
- 发布说明:GitHub release-1.30.0
- 1.29.6:release-1.29.6
- 1.29.7:release-1.29.7
- 变更日志:nginx.org/en/CHANGES
- 官方博客:NGINX OSS 1.29.6 and 1.29.7: Open-sourced Session Persistence, Multipath TCP and More
sticky cookie 会话保持开源
1.29.6 把基于 cookie 的会话保持加进了开源版,此前这项能力只在商业版 NGINX Plus 中提供。开启后 NGINX 会下发一个会话 cookie,并把该客户端后续的请求路由到同一个上游服务器。
相比基于 IP 的亲和方式,cookie 保持不受 NAT、移动网络、运营商级代理以及大规模边缘路由的影响——这些场景下客户端出口 IP 会频繁变化,IP 亲和很容易把同一会话打到不同后端。
配置写法:
upstream backend {
server backend1.example.com;
server backend2.example.com;
sticky cookie srv_id expires=1h domain=.example.com path=/;
}
现实情况是,不少生产负载仍在用进程内存保存会话状态,无状态改造并不是随时都能排上日程。cookie 持久化提供的是确定性路由,不需要引入外部会话存储,也不需要改应用代码。
上游连接默认使用 HTTP/1.1
1.29.7 起,NGINX 代理到上游时默认使用 HTTP/1.1。HTTP/1.1 带来的是上游长连接(keepalive)、分块传输编码,以及对现代应用框架更普遍的兼容性。运维侧不再需要显式指定 HTTP/1.1、手动开启 keepalive、手动清掉 connection 头。
Multipath TCP(MPTCP)
1.29.7 增加了 Multipath TCP 支持。MPTCP 允许一条 TCP 连接同时使用多条网络路径,在多宿主或异构网络环境中改善连接韧性和吞吐。
1.30.0 合并的主要内容
稳定版把 1.29.x 的特性纳入,包括 Early Hints、到上游的 HTTP/2、Encrypted ClientHello、上游 sticky session、MPTCP,以及默认代理 HTTP 版本为 HTTP/1.1 并启用 keepalive。对应的主要提交:
- HTTP Early Hints(#326);HTTP/3 对 “103 Early Hints” 的 indexed field line 编码(#746);上游修复多个 103(early hints)响应的处理(#1241)
- 到上游的 HTTP/2(#771)
- OpenSSL ECH 集成(#840)
- SSL:支持 BoringSSL 的压缩服务端证书(#823);上游证书压缩(#788)
- 上游:增加 sticky session 支持(#1167)
- 上游 keepalive:默认启用 keepalive 模块(#1080)
- Multipath TCP 支持(#931)
- SSL:新增
$ssl_sigalg、$ssl_client_sigalg(#932) add_header与add_trailer的继承控制(#918)- Geo:
volatile参数(#943) - 新增
max_headers指令(#1116) - SSL:兼容 OpenSSL 4.0(#1183)
- 分块传输编码中禁用裸 LF(#1016)
- Geo:修复
geo块内include指令(#1184)
按官方博客的说法,这是把原先 Plus 独有能力逐步开源的计划中的第一批,未来几个月还会继续放出,路线图会在新的 GitHub roadmap 上公开。
升级前需要核对的几处行为变化
- 上游代理默认 HTTP/1.1 + 默认启用 keepalive:原先依赖 HTTP/1.0、无长连接的上游配置,升级后行为和连接复用会变,建议先在灰度环境验证上游的并发连接与超时表现。
add_header/add_trailer的继承控制:继承规则可被显式控制,意味着此前依赖旧继承行为拼出来的响应头配置需要重新确认,避免出现头被覆盖或丢失。