系统极客一直在努力
专注操作系统及软件使用技能

Nginx 1.31.4 主线版本发布:支持 PROXY protocol v2

Nginx

Nginx 1.31.4 主线版本正式发布。本次更新重点集中在 3 个方面:PROXY protocol v2 链路补全,HTTP 和 gRPC 上游请求规范化,以及 HTTP/2、HTTP/3 和 gRPC 等协议栈的稳定性修复。

Nginx 1.31.4 主要更新

Stream 和邮件代理:支持 PROXY protocol v2

  • streammail模块的proxy_protocol指令新增了v2参数,向后端发送二进制格式的 PROXY protocol v2 报文。
  • 原来的 proxy_protocol on; 仍然会默认发送「文本格式」的 v1 报文;需要把真实客户端地址、端口等连接信息传给支持 v2 的后端时,只需显式配proxy_protocol v2;即可。

例如,Stream 场景可以参考下面的配置:

stream {
    server {
        listen 3306;
        proxy_pass 10.0.0.20:3306;
        proxy_protocol v2;
    }
}

这个能力适合前置负载均衡、四层代理和邮件网关链路。启用前要先确认「后端服务」或「中间设备」能够解析 PROXY protocol v2,避免二进制协议头被当成业务数据处理。

HTTP 与 gRPC 上游请求:统一传递目标主机信息

  • Nginx 现在会根据上游连接协议,固定传递目标主机字段:在向 HTTP/2 或 gRPC 后端发送请求时,会使用:authority伪首部;向 HTTP/1.1 后端发送请求时,使用Host首部。

本次调整把不同上游协议下的主机名传递规则进行了统一。如果你的部署使用了 HTTP/2 或 gRPC 上游,又依赖虚拟主机路由、SNI 关联逻辑,或者做了自定义首部改写,升级后需要重点核对后端访问日志和路由结果是否正常。

gRPC 不再接受长度不完整的响应

  • 如果 gRPC 响应声明了非零Content-Length,但实际响应内容不完整时,Nginx 现在会直接判定为格式错误,不再按正常响应处理。

修复 select 事件模型下的工作进程崩溃

  • 修复了使用select事件模型时,工作进程可能出现「段错误」的问题。虽然大多数 Linux 生产环境默认使用epoll,但在兼容性平台、受限运行环境,或者显式配置了select的场景中,这项修复直接关系到进程稳定性。

解决第三方模块脚本代码的二进制兼容问题

  • 修复了 1.31.3 版本引入的脚本代码二进制兼容性问题。

依赖相关脚本代码机制的第三方动态模块建议优先验证升级效果,尤其是直接从 1.31.3 升上来的环境。

其他修复

Nginx 1.31.4 还修复了 HTTP/2、HTTP/3、图像过滤、gRPC 和 Perl 模块的多个问题,GitHub 发布汇总里列出了完整改动:包括 QUIC 流控、HTTP/2 WINDOW_UPDATE校验、上游Host处理、XSLT 解析错误处理、图像过滤器边界读取、目录索引内存管理等。

模块或场景本次处理方向
HTTP/2 与 HTTP/3修复协议处理与流量控制相关问题。
gRPC收紧不完整响应处理,并修正上游请求与协议细节。
ngx_http_image_filter_module修复图像解析时的边界读取问题。
ngx_http_xslt_filter_module改进 XML 推送解析器错误处理。
ngx_http_perl_module修复模块内部问题。
autoindex调整目录项处理的内存使用方式。
赞(0)
分享到

评论 抢沙发