Angie 版本历史#

2025#

Angie 1.8.2#

发布日期: 13.02.2025.

安全性#

  • 在处理使用 TLSv1.3 SNI 的虚拟服务器时,验证不足, 允许 SSL 会话在不同的虚拟服务器中重复使用, 从而绕过客户端 SSL 证书验证 (CVE-2025-23419); 该修复已从 nginx 1.27.4 移植。

错误修复#

  • 通过 API 请求检索由变量设置的单个区域的统计值, 可能会导致工作进程进入无限循环。

  • HTTP/3 请求未计入区域统计数据; 该错误出现在 1.8.0 版本。

  • 使用 QUIC 协议的 TLS 握手未计入 SSL 统计数据。

  • 通过 ACME 协议 续订证书时, 如果 server_name 指令中的服务器名称以点 (.) 开头,可能会导致失败。

软件包#


2024#

Angie 1.8.1#

发布日期:2024年12月28日。

修复#

  • 在 HTTP 模块的 server 块中使用 status_zone 指令会导致在 TLS 握 手过程中 access_log 记录过多空请求日志;此问题出现在 1.8.0 中。

  • HTTP/3 流的解码错误可能导致在关闭 QUIC 连接时工作进程崩溃;修复已从 nginx 1.27.4 移植。

  • 发送 QUIC 协议版本协商数据包可能导致无限的数据包交换循环;修复已从 nginx 1.27.4 移植。

  • ACME 模块 中使用无钩子的 DNS 挑战可能在某些配置下导致工作进程崩溃。

软件包#

Angie 1.8.0#

发布日期:2024年12月19日。

特性#

  • 支持通过处理来自 ACME 服务器的 DNS 查询的 DNS-01 挑战,这使得可以自动请求任何类型的证书,包括通配符证书。

  • ACME 模块中的钩子系统,可通过 acme_hook 指令进行配置,这允许使用外部应用程序处理域名挑战,从而与各种服务和 DNS 托管提供商集成。

  • ACME 模块记录了一些附加信息:证书为何被更新、完整域名列表、客户端账户 ID、长时间的不活动期(例如轮询)以及被挑战的域名;这些信息简化了故障排除,并允许指定 CAA DNS 记录。

  • acme_client 指令的 account_key 参数,允许重用现有密钥,而不是自动生成新的密钥。

  • 在流和 HTTP 模块中的 status_zone 指令中支持变量,这允许在单个 locationserver 块内动态计算多个区域的统计数据;特别是在一个 server 块处理多个虚拟主机时,这一点尤其有用。

  • zlib-ng 版本 2.2.0 及以上的 GZip HTTP 压缩模块兼容,此前可能会导致错误日志中出现 [alert] gzip filter failed to use preallocated memory 消息。

  • max_headers 指令限制 HTTP 请求头字段的数量,以更好地防范 DoS 攻击。感谢 Maxim Dounin (freenginx) 和 Maksim Yevmenkin。

  • http3_max_table_capacityproxy_http3_max_table_capacity 指令用于配置 HTTP/3 动态头压缩表的限制。

  • 跨编译支持 - 构建系统现在可以使用包装脚本运行自动测试,这使得能够在不直接在目标平台上运行测试程序的情况下准备构建。

  • nginx 1.27.3 的所有功能。

错误修复#

  • 在使用 0-RTT 时,HTTP/3 客户端可能会超时;该错误是从 nginx 的 1.7.0 版本继承而来的。

  • 在使用 proxy_pass 指令的 HTTP/3 代理中,未指定 upstream 块可能会导致工作进程崩溃。

  • 使用动态表的 HTTP/3 上游可能导致工作进程崩溃,如果与缓存一起使用。

  • 一些 SSL 握手在流模块的统计中可能未被计算。

  • httpserver 级别指定的 HTTP/3 代理设置可能会被忽略。

  • 在启用 NTLS 支持的情况下,使用 HTTP/3 代理时 proxy_ssl_certificate 指令不起作用。

变更#

软件包#


Angie 1.7.0#

发布日期:2024年9月19日。

特性#

  • 当从组中移除代理服务器时,可以通过 proxy_connection_dropgrpc_connection_dropfastcgi_connection_dropscgi_connection_dropuwsgi_connection_drop 指令配置强制关闭所有连接。

  • 解析器统计 API 中的 DNS 查询类型发送计数,这些统计是通过 resolver 指令的 status_zone 参数收集的。

  • $ssl_server_cert_type 变量包含已接收 TLS 连接所选证书的类型。

  • 通过 pid 指令的 off 参数禁用 PID 文件的创建,这在使用不可变镜像和服务管理器直接控制时可能是有利的。感谢 Maxim Dounin (freenginx)。

  • 通过中间临时文件使 PID 文件的创建变为原子操作,这消除了文件已在目录中但仍为空的时刻,使外部程序更容易和可靠地处理。

  • 现在,在重新配置期间,如果 pid 指令中的名称已更改但通过符号链接指向同一文件,则不再尝试重新创建 PID 文件;特别是在系统从 /var/run/angie.pid 迁移到 /run/angie.pid 时,可以避免问题。感谢 Maxim Dounin (freenginx)。

  • Syslog logging 错误现在每秒最多报告一次;这有助于避免在 syslog 服务器关闭或过载时日志中出现大量此类消息。感谢 Maxim Dounin (freenginx)。

  • 在邮件代理模块中,通过 max_commands 指令配置的最大认证命令数被限制,以更好地防范 DoS 攻击。感谢 Maxim Dounin (freenginx)。

  • --feature-cache option./configure 脚本在构建多个模块或进行交叉编译时缓存其结果以进行优化。

  • nginx 1.27.1 的所有功能。

错误修复#

  • 启动时可能出现 PID file ... not readable (yet?)Failed to parse PID from file... 错误,尤其是在使用 systemd 时。感谢 Maxim Dounin (freenginx)。

变更#

  • 更新 HTTP 状态代码的描述,以符合 RFC 9110。感谢 Maxim Dounin (freenginx) 和 Michiel W. Beijen。

  • 现在在 HTTP 请求前最多允许一行空行,以更好地防范 DoS 攻击。感谢 Maxim Dounin (freenginx)。

  • HTTP/1.x 头字段名称现在禁止没有结尾冒号的字段;来自客户端或代理服务器的此类无效头字段将导致错误响应。感谢 Maxim Dounin (freenginx) 和 Maksim Yevmenkin。

  • 在使用 HTTP/1.1 分块传输编码读取请求体时,忽略的块扩展和尾部头字段的总大小现在受 client_max_body_size 指令的限制,以更好地防范 DoS 攻击。感谢 Maxim Dounin (freenginx) 和 Bartek Nowotarski。

  • mime.types 配置文件中的 MIME 类型已更改为 image/bmp,用于 bmp 扩展和 application/vnd.rar,用于 rar 扩展;已设置为 application/vnd.debian.binary-package,用于 debudeb 扩展。感谢 Yuriy Izorkin。

软件包#

2024年10月24日

2024年11月29日


Angie 1.6.2#

发布日期:2024年8月16日。

安全性#


Angie 1.6.1#

发布日期:2024年8月8日。

特性#

错误修复#

  • 在使用虚拟服务器或 pass 指令时,可能会导致统计 API 中的连接计数不正确。

  • 在配置中有 5 个或更多 ACME 客户端时,工作进程可能崩溃;该错误在 1.6.0 中出现。

  • 处理带有 X-Accel-Redirect 头的缓存响应可能导致工作进程崩溃。感谢 Maxim Dounin (freenginx) 和 Jiří Setnička。

软件包#


Angie 1.6.0#

发布日期:2024年6月28日。

特性#

  • sticky 指令及其相关选项在 stream 模块的 upstream 块中,允许配置粘性会话模式,其中会话中的所有连接都路由到同一服务器。

  • 使用 rdp_preread 指令提取来自 RDP 连接的 Cookie 值,在 stream 模块中,将其提取到 $rdp_cookie$rdp_cookie_NAME 变量中,这使得能够记录并将 RDP 客户端会话粘附到特定服务器,同时进行负载均衡。

  • server 块中支持多个 acme 指令,允许为该虚拟服务器同时配置获得两种类型的证书。

  • 命令行选项 -m-M 列出内置和加载的模块。

  • ACME 模块中支持 BoringSSL

  • nginx 1.27.0 的所有功能,包括在 stream 模块中支持虚拟服务器和 pass 指令,允许将接受的连接转发到另一个监听套接字,包括 HTTPMail 模块。

错误修复#

  • 通过 ACME 协议请求证书可能导致某些配置出现错误,日志消息类似于 [alert] getsockname() failed (9: Bad file descriptor)

  • 通过 ACME 协议请求大量域名的证书可能导致错误,日志消息类似于 [error] JSON parser error

  • 在具有多个 error_log 指令的配置中,ACME 客户端可能将消息记录到无关的日志中。

软件包#


Angie 1.5.2#

发布日期:2024年6月3日。

安全性#

当使用 HTTP/3 时,处理特殊构造的 QUIC 会话可能导致工作进程崩溃、在 MTU 大于 4096 字节的系统上泄露工作进程内存,或产生其他影响(CVE-2024-32760CVE-2024-31079CVE-2024-35200CVE-2024-34161);修复已从 nginx 1.26.1 移植。

软件包#


Angie 1.5.1#

发布日期:2024年5月16日。

错误修复#

  • 当在 HTTP 块中使用 server 指令的 resolve 选项时,如果解析的 IP 地址数量与指定服务器数量不同,proxy_next_upstream 机制无法正常工作。

  • 在通过 ACME 协议请求证书时,工作进程可能会发生分段错误。

  • stream 模块中代理 TCP 连接时,slow_start 机制无法工作。

  • 如果 HTTP/3 请求作为 TLS 1.3 早期数据接收,可能会导致错误;该错误在 1.4.0 中出现。

  • 在使用 QUIC 的 0-RTT 时,HTTP/3 连接可能会被过早关闭。

  • 从快速连接读取请求主体时,可能会长时间读取。感谢 Maxim Dounin (freenginx)。

变更#

  • 现在 ACME 客户端不会丢弃之前存储的已过期或为不同域名列表签发的证书,而是在续订时使用它们。

软件包#

2024年5月27日

  • Alpine 3.20 添加了软件包。


Angie 1.5.0#

发布日期:2024年3月27日。

功能#

  • 基本支持使用 ACME 协议 自动获取和更新证书,配置可通过 acme_clientacme 指令以及形如 $acme_cert_=$acme_cert_key_= 的变量进行。

  • 通过 auto_redirect 指令配置自动重定向,向请求 URI 添加尾部斜杠。

  • 输出 statistics metrics 时使用 Epoch 格式的日期,而不是 ISO 8601,便于在 Prometheus 中使用,并可选在 JSON API 中使用 ?date-epoch 请求参数。

  • statistics API 中为上游对等方引入新的 recovering 状态,表明对等方在故障后正在缓慢启动,如 slow_start 选项所示。

  • 现在 -V 参数还显示相关的 nginx 版本,这对与第三方工具(特别是 certbot)的兼容性很有用。感谢 AdvTechnoKing

  • 完全支持 nginx 1.25.4

错误修复#

  • 如果使用了 SSL 会话重用机制 proxy_ssl_session_reuse,并且代理服务器列表动态更新,则可能会在为相应的 upstream 块配置的共享内存区域中发生泄漏。

软件包#

2024年3月28日

2024年4月16日

2024年4月25日


Angie 1.4.1#

发布日期:2024年2月15日。

安全#

  • 当使用 HTTP/3 时,处理特殊构造的 QUIC 会话时,工作进程可能会发生分段错误(CVE-2024-24989);注意,Angie 从 1.4.0 开始已经不易受 CVE-2024-24990 的影响。

软件包#

2023#

Angie 1.4.0#

发布日期:2023年12月12日。

功能#

错误修复#

  • 如果代理服务器是组中唯一的服务器,则即使恢复后,也可能错误地报告为 unavailable,在 metrics API 中。

软件包#

2023年12月18日

2023年12月25日

2024年1月22日


Angie 1.3.2#

发布日期:2023年11月23日。

错误修复#

  • Prometheus 输出中可能存在不正确的指标值,这些值使用了除 $p8s_value 之外的变量;在实践中,该问题可能出现在标准 prometheus_all.conf 模板中的 angie_http_upstreams_peers_stateangie_stream_upstreams_peers_state 中。

  • 如果对上游服务器的某些连接尝试立即失败,则可能未在 statistics API 中正确记录;该错误在 1.3.0 中出现。

软件包#

2023年12月4日

2023年12月7日


Angie 1.3.1#

发布日期:2023年10月18日。

安全#

  • 对 HTTP/2 流处理增加额外限制,以更好地防止被称为 "HTTP/2 Rapid Reset" 的 DoS 攻击(CVE-2023-44487)。

软件包#

2023年10月26日

2023年11月13日


Angie 1.3.0#

发布日期:2023年9月19日。

功能#

  • 能够在 location 指令中指定多个匹配模式,允许 combine 多个具有类似设置的 location 块,从而通过减少重复简化配置。

  • 使用新的 prometheusprometheus_template 指令,以灵活的模板配置导出 Prometheus 格式的多样统计指标。

  • api 指令提供的统计界面中,提供流上游服务器组的详细信息和 metrics

  • stream 模块的 upstream 块中,server 指令的 resolve 选项允许监视与域名对应的 IP 地址列表的变化,并在无需重新加载配置的情况下自动更新。

  • stream 模块的 upstream 块中,server 指令的 service 选项允许从 DNS SRV 记录中检索地址列表,提供基本的优先级支持。

  • 通过 api 指令提供的接口访问当前工作进程生成所用的配置文件内容,并启用 api_config_files 指令。

  • 在进程标题中显示 configuration generation 号,便于监控配置重载的成功与前一代工作进程的数量,使用 ps 工具。

  • 完全支持 nginx 1.25.2

错误修复#

  • 当使用 ./configure 选项 --without-http_upstream_zone_module--without-stream_upstream_zone_module 时,编译失败;该错误在 1.2.0 中出现。

变更#

  • 现在在加载 OpenSSL 配置时使用应用程序名称 angie

软件包#


Angie 1.2.0#

发布日期:2023年5月30日。

功能#

  • HTTP 模块的 upstream 块中引入 sticky 指令及相关选项,允许配置粘性会话模式,其中会话的所有请求均路由到同一服务器。

  • $upstream_sticky_status 变量,根据启用粘性会话请求相关上游服务器的成功与否,取值为 NEWHITMISS

  • 在使用 TongSuo TLS 库时,在 HTTP 模块中支持 NTLS;支持可以通过 ‑‑with‑ntls 构建时选项启用,并使用相应的 ssl_ntlsproxy_ssl_ntls 指令进行配置。

HTTP 代理模块中,可以使用 proxy_ssl_certificateproxy_ssl_certificate_key 指令指定多个不同类型(RSA 和 ECDSA)的证书及其对应的密钥。

  • master 进程标题中显示版本和构建名称,这允许使用 ps 工具获取正在运行的服务器实例的信息。

  • gzip 模块能够压缩 "207 Multi-Status" 响应。感谢 DBotThePony

  • 包含 nginx 1.25.0 的所有功能,包括 HTTP/3 支持。

软件包#

13.06.2023

12.07.2023

28.07.2023

18.08.2023


Angie 1.1.0#

发布日期:24.01.2023。

功能#

  • HTTP 模块的 server 指令中的 resolve 选项,允许监控与域名对应的 IP 地址列表的变化,并在无需重新加载配置的情况下自动更新。

  • HTTP 模块的 server 指令中的 service 选项,允许从 DNS SRV 记录中检索地址列表,支持基本优先级。

  • api 指令提供的统计界面中,针对 HTTP 上游服务器组的 详细信息和指标

  • autoindex 对目录列表使用自然排序顺序。

  • 包含 nginx 1.23.3 的所有功能。

错误修复#

  • 使用 GCC 9 或更早版本时,因错误警告导致编译失败,使用 -O2 或更高优化级别。

软件包#

15.03.2023

07.04.2023

  • ALT Linux 添加了软件包。

11.05.2023

26.05.2023

  • Astra Linux 特别版添加了软件包。


2022#

Angie 1.0.0#

发布日期:27.10.2022。

功能#

  • api 指令提供 HTTP RESTful 接口,以 JSON 格式访问有关 Web 服务器实例的基本信息,以及 metrics 客户端连接、共享内存区域、DNS 查询、HTTP 请求、HTTP 响应缓存、stream 模块的 TCP/UDP 会话,以及 limit_conn/limit_req 模块的区域的指标。

  • HTTP 模块中的 status_zone 指令,用于指定区域以收集 serverlocation 上下文中的请求指标。

  • stream 模块中的 status_zone 指令,用于指定区域以收集 TCP/UDP 会话指标。

  • resolver 指令的 status_zone 参数,用于指定区域以收集 DNS 查询的指标。

  • $angie_version 变量包含 Angie 的版本。

  • 包含 nginx 1.23.2 的所有功能。