Angie 和 Angie PRO 更新至 1.12.0 版本#

13.07.2026

Angie 和 Angie PRO 1.12.0 已发布,这是一次重大的功能更新。开源版 Angie 新增了按响应时间的负载均衡、sticky 的 learn 模式和服务器排空(从 Angie PRO 移植)、用于 stream 的 Metrics 模块、DNS-over-HTTPS 服务器、证书 API、增强的 ACME,以及错误日志的过滤和 JSON 格式输出;该版本基于最新的 nginx,并支持 CONNECT 隧道。

Angie 及其商业版本 Angie PRO — 1.12.0 — 现已推出,每个版本都带来了大量新功能。 如果你觉得 1.11.0 已经足够重磅, 那么这次走得更远:每个版本的更改列表都超过了 30 项。

Angie PRO 的六项功能现已进入开源版本:

  • 通过 least_time 指令,为使用代理的 httpstream 服务器实现按平均响应时间的负载均衡:对于 http 会计入接收响应头或完整 响应的时间,对于 stream 则会计入建立连接和接收字节的时间。平滑系数 通过 response_time_factor 指令进行配置。

  • sticky 指令的 learn 模式,可通过动态生成的键将客户端绑定到 服务器。会话保存在共享内存中,其创建和查找方式可通过变量灵活配置,例如根据 被代理服务器响应中的 cookie。

  • drain 模式,可平滑地将服务器移出轮转:不再向其转发新请求,而已经 绑定的客户端会继续得到服务,服务器随之进入新的 draining 状态。真正 意义上的零停机部署。

  • 统计 API 中的平均响应时间:现在 /status/http/upstreams//status/stream/upstreams/ 部分会为每个服务器显示多项指标——对于 http 是接收响应头和完整响应的时间,对于 stream 是建立连接 以及接收第一个和最后一个字节的时间。平滑系数通过 response_time_factor 设置,并支持 Prometheus。

两个版本的其他新特性:

  • 内置 DNS-over-HTTPS 服务器:新的 DoH 模块(RFC 8484)可通过 HTTP/HTTPS 接收 DNS 查询,并将其代理到 DNS 服务器(经由 UDP 或 TCP)。只需几行配置即可搭建 自己的 DoH 服务器。

  • 增强的 ACME:为 IP 地址签发证书(通过 Let's Encrypt,并支持配置文件)、面向 商业证书颁发机构(DigiCert、SSL.com 等)的 External Account Binding(EAB, 通过 HMAC 认证)、与 SSL.com 及类似服务器更好的兼容性,以及面向会过滤低 TTL 的 DNS 响应的提供商的 acme_dns_ttl 指令。

  • 免配置 DNS:解析器配置现在默认启用——Angie 会自行读取 /etc/resolv.conf 并监视其变化,因此不再需要手动指定 DNS 服务器地址; 如需关闭,请使用 resolver off 指令。

  • 更高水平的日志记录:通过 filter= 过滤消息,并借助 error_log_user_tag 标签将事件路由到各处理器;错误日志支持 JSON 格式 输出;通过 rate= 限制频率(默认每秒 1000 条消息);新增的 time_format 指令支持 strftime() 以及表示毫秒的 %L 占位符。此外,还可通过 ssl_keylog_fileproxy_ssl_keylog_file 记录 SSL 会话密钥。

  • 更简洁的配置:现在 rewrite 模块中的 goto 指令可在不改变 URI 的情况下内部重定向到命名 location,并且可在 if 块内使用,从而免去 基于 try_fileserror_page 的变通做法。内置错误页面和 AutoIndex 列表现已支持深色配色方案。

  • 统计与可观测性:Metrics 模块现在也可用于 stream 模块——通过 /status/stream/metric_zones/ API 部分提供计数器、直方图和滑动平均值, 并支持 Prometheus;新的 /certificates/ API 部分将配置中的证书以及 ACME 客户端获取的证书汇集到一处,简化了有效期的监控;而 $upstream_transport 变量会显示与组内某个服务器每次连接尝试所选用的 传输方式(TCP 或 UDP)。

  • 与 nginx 1.31.2 同步:其全部功能均已纳入,特别是用于 CONNECT 隧道的 新 Tunnel 模块(Angie 可作为任意 TCP 流量的 HTTP 代理)、面向后端服务器的 HTTP/2 代理,以及新的 $ssl_sigalgs 变量,其中包含客户端所支持的签名 算法列表。

在 Angie PRO 中,还包括:

  • 为 stream 组的 proxy_pass 增加了端口支持:对于未设置端口的服务器组, 可直接在 proxy_pass 中指定端口。这样,同一个组便可用于代理到不同的 端口——每个服务器的状态以统一方式跟踪,某个服务器不可用时会同时反映到所有 端口。而 no_port 指令用于将该组显式标记为不使用端口。

  • proxy_bind 现在会在选定服务器之后再对变量求值,因此可将出站连接绑定 到依赖于所选具体服务器的地址。

  • $upstream_current_addr 变量包含当前 upstream 服务器的地址,并且在 选择该服务器的那一刻即可获得,与 proxy_bind 搭配使用尤为方便。与 $upstream_addr 不同,它始终只包含一个地址。

  • 在主组与备用组之间原子地切换服务器——只需向 /config API 中的 backup 字段发送一次请求即可。

  • 统计 API 中的 feedback 字段:使用同名的负载均衡方法时,它会显示每个 服务器当前累积的动态权重值。

关于更改的详细信息:

P.S. 顺便一提,一周后的 7 月 21 日,Angie 就满四周年了——所以这个版本也算是一份 小小的生日礼物。感谢一路相伴的每一位!

祝您度过愉快的一天!