综合 NGINX 1.30.0 稳定版:sticky cookie 会话保持开源,上游代理默认改成 HTTP/1.1

2026-10-09 20:01:06

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。

相关信息:

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 的继承控制:继承规则可被显式控制,意味着此前依赖旧继承行为拼出来的响应头配置需要重新确认,避免出现头被覆盖或丢失。

推荐文章

程序员茄子在线接单