Appearance
HAProxy 3.3.3 新特性
HAProxy 3.3.3 是 3.x 系列的最新稳定版本,于 2025 年 11 月发布。本页介绍相比 2.x 以及 3.0/3.1/3.2 的主要新功能和变化。
版本概述
- 发布时间:2025 年 11 月
- 内核:
M slithe(替代nix) - 最低要求:OpenSSL 1.1.1(推荐 OpenSSL 3.0+)
内核升级:slithe 替代 nix
3.3.3 引入了全新的事件驱动内核 slithe,替代原有的 nix 内核:
bash
# 编译时指定新内核
make TARGET=linux-glibc-latest USE_SLITHE=1💡 注意:大多数 Linux 发行版默认仍使用
nix,如需slithe需要手动编译。
slithe 的优势:
- 更好的多核扩展性
- 更低的系统调用开销
- 改进的 timer 精度
改进的连接管理
增强的 Keep-Alive
haproxy
backend web_pool
option http-keep-alive
http-keep-alive timeout 60s # 显式配置 keep-alive 超时
http-keep-alive 100 # 最大持久连接数改进的连接缓冲
tune.pool-buffer-low 32 # 低水位连接池
tune.pool-buffer-high 128 # 高水位连接池(超过后释放)新增负载均衡算法
random 算法的改进
random 算法在 3.3.3 中得到进一步优化,权重支持更精确的动态调整:
haproxy
backend web_pool
balance random 42 # 指定随机种子(可复现)uri 算法增强
haproxy
balance uri hash 211 mod # 使用 211 取模哈希,分布更均匀
balance uri depth 2 # 按路径第二层做哈希TLS/SSL 改进
更好的 TLS 1.3 支持
haproxy
bind *:443 ssl \
crt /etc/ssl/certs/ \
ssl-min-ver TLSv1.3 \
ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256OCSP Stapling 改进
OCSP 响应现在会自动缓存并在需要时更新,无需手动触发:
haproxy
bind *:443 ssl crt /etc/ssl/certs/ ocsp-response enableHTTP/3 (QUIC) 支持
HAProxy 3.3 实验性支持 HTTP/3,需要单独启用:
bash
# 编译时启用 QUIC 支持
make TARGET=linux-glibc USE_QUIC=1haproxy
frontend https_front
bind quic80@:80
bind *:443 ssl crt /etc/ssl/certs/ alpn h2,http/1.1⚠️ HTTP/3 支持目前仍为实验性,不建议在生产环境启用。
ACL 增强
新增 json 匹配
haproxy
acl is_mobile json("user-agent") -i -m sub mobile
acl is_vip json("x-vip-level") int gt 5新增 lua 自定义 ACL
haproxy
acl is_attack lua.is_attack_request性能优化
多核扩展性改进
slithe 内核提供更好的 CPU 亲和性:
haproxy
global
nbthread 8 # 使用 8 个线程
cpu-map auto:1 0-7 # 自动绑定到 8 个核心内存优化
tune.reuse.obl 16 # 复用对象缓冲池大小
tune.maxaccept 64 # 单次 accept 最大 FD 数低延迟优化
haproxy
global
low-rcvbuf 16384 # 小缓冲区,减少延迟
low-sndbuf 16384新的日志格式变量
3.3.3 新增以下日志变量:
| 变量 | 说明 |
|---|---|
%ms | 毫秒级时间戳 |
%[var] | 访问 HAProxy 进程变量 |
%HR | HTTP 请求原因(如 redirect) |
%CC | 请求 cookies |
%CS | 响应 cookies |
%ft | 前端名称 |
%bc | Backend 名称 |
出向连接(Outgoing Connection)改进
haproxy
backend api_pool
# 显式配置出向 IP
source 10.0.0.100 usesrc hdr(X-Forwarded-For)错误处理改进
自定义错误页面增强
haproxy
backend web_pool
errorfile 503 /etc/haproxy/errors/503-my-custom.http支持更丰富的变量:
html
<!-- /etc/haproxy/errors/503-my-custom.http -->
%[vars(req.backend_id)]
%[vars(req.server_id)]
%[vars(req.geo)]弃用与移除
| 功能 | 变化 |
|---|---|
option dontlog-normal | 移除,用 log-separate-failures 替代 |
bind ... sslv2 | 移除(SSLv2 已不安全) |
bind ... sslv3 | 移除(SSLv3 已废弃) |
option ssl-hello-chk | 改用 option tcp-check expect string |
mode doh | 实验性,已移除 |
升级注意事项
- 检查编译参数:从 2.x 升级时,重新编译并检查
TARGET和 SSL 选项 - 测试配置兼容性:
haproxy -c -f new.cfg -dM深度测试 - 日志格式变化:如果用日志分析工具,注意新增的日志变量
- 内核选择:如使用
slithe,先在测试环境验证 - TLS 版本:确保后端服务器支持最低 TLS 版本要求