Angie 版本历史#

2025#

Angie 1.10.3#

发布日期:2025 年 11 月 13 日。

安全#

  • 在 SMTP 模块中使用 none 认证方法时,处理特制的登录名/密码可能导致 工作进程内存泄露到认证服务器 (CVE-2025-53859);该修复从 nginx 1.29.1 移植。

错误修复#

  • 当使用 acme_client 指令的 renew_on_load 选项时, 如果先前获得的证书存在,则不会加载该证书。这可能会限制功能, 直到证书续订完成。如果证书不存在,尝试获取新证书将失败, 并显示错误 [alert] lseek() failed (9: Bad file descriptor)

  • 如果 ACME 客户端stream 块中被引用但不在 http 块中,它将被禁用并显示警告 [warn] ACME client ... is defined but not used,并且永远不会获取证书。

  • 如果所有 acme_client 指令都有 enabled=off 参数, 并且在配置中使用了相关的 $acme_cert_* 变量,Angie 将无法启动, 并报告错误 [emerg] unknown acme_cert_* variable

  • 如果 ACME 客户端 在位于 http 块之前的 stream 块中使用,Angie 将无法启动,并报告错误 [emerg] ACME client .. is not defined but referenced

  • 某些 client 块配置在使用引用在此情况下缺失的传入连接的变量时, 可能导致工作进程崩溃。

软件包#


Angie 1.10.2#

发布日期:2025 年 8 月 21 日。

错误修复#

  • http 块中的代理模块设置可能会破坏使用 client 块 进行出站请求的模块的功能;该错误出现在 1.10.0 版本中。

  • proxy_ignore_client_abort 与使用 client 块 进行出站请求的模块一起启用可能导致工作进程崩溃; 该错误出现在 1.10.0 版本中。

  • 如果在上游组中预配置了单个服务器,通过 Docker API 添加的服务器可能不会包含在负载均衡中。

  • 如果上游组中的唯一服务器是通过 Docker API 添加的, 当检测到不可用时,它可能会被排除在负载均衡之外。

软件包#


Angie 1.10.1#

发布日期:2025 年 7 月 17 日。

变更#

  • client 块中指定的指令现在只能被该块内显式声明的 location 块继承,因此它们不会影响隐式使用 client 块 进行出站请求的其他模块的配置。

功能#

  • 支持多个 client 块,允许将不同 location 块的 公共设置分组到每个块中,从而减少配置重复。

错误修复#

  • 当在 listen 指令中使用 reuseport 参数时, 到指定地址和端口的所有连接都由单个工作进程处理; 该错误出现在 1.10.0 版本中。

  • 如果服务器上启用了 QUIC 协议 retry 模式,使用 OpenSSL 库 版本 3.5.0 或更高版本时,与上游服务器的 HTTP/3 握手可能失败。

  • 使用 GCC 15 构建 HTTP/2HTTP/3 模块会导致错误。

  • 使用 GCC 时,使用 -O3 标志构建可能导致错误。


Angie 1.10.0#

发布日期:2025 年 7 月 3 日。

功能#

  • 基于 Docker(或 Podman)容器标签自动检索和动态更新代理服务器组, 使用 docker_endpoint 指令配置。这使得能够通过指定的 Docker API 端点实时监控容器启动和停止事件,并允许根据其标签将其地址添加到 upstream 组或从中删除——所有这些都无需重新加载配置。

  • 支持在 stream 模块中通过 ACME 协议自动获取证书, 使用 acme 指令和 $acme_cert_*$acme_cert_key_* 等变量配置。

  • 支持使用 listen 指令的 multipath 参数处理 MPTCP 连接。 感谢 Maxim Dounin (freenginx)、Maxime Dourov 和 Anthony Doeraene。

  • 新增 client 块,允许为各种模块发出的内部 HTTP 请求 指定额外的配置。

  • 包含 nginx 1.27.5 的所有功能, 包括 QUIC 连接的 CUBIC 拥塞控制。

软件包#

2025 年 7 月 14 日


Angie 1.9.1#

发布日期:2025 年 5 月 29 日。

功能#

  • acme_dns_port 指令中支持 IP 地址和端口号; IPv4 和 IPv6 均可使用。

错误修复#

  • server_name 指令中同时使用通配符域名和匹配的三级域名 可能导致 ACME 服务器在单个 ACME 客户端下为这些域名颁发证书时失败。

  • stream 模块中,在被动检查期间成功连接到代理服务器后, 其在统计 API 中的状态会错误地显示为 unavailable, 直到会话结束。

  • HTTP/3 请求可能停滞并超时;该修复从 nginx 1.29.0 移植。

  • 在建立到代理服务器的 HTTP/3 连接时出现早期错误可能导致工作进程崩溃。

  • 通过 HTTP/3 协议代理时,统计信息中的活动连接数可能显示不正确。

软件包#


Angie 1.9.0#

发布日期:2025 年 4 月 11 日。

功能#

  • proxy_cache_path 指令中可以指定一个文件,用于在服务器启动之间保存包含缓存索引的共享内存区域的内容;这消除了重启后重新加载缓存的需要,并允许服务器几乎立即恢复在线。

  • stream 模块中使用 ssl_early_data 指令支持 TLS 1.3 Early Data (0-RTT)。

  • 统计 API 中为上游对等节点新增 busy 状态,表示对等节点已达到 max_conns 选项配置的限制。

  • acme_hook 指令中的 uri= 参数允许重新定义钩子请求 URI 并支持变量。

  • acme_client 指令的 renew_on_load 参数允许在配置加载时强制更新证书。

  • 现在通过 /status/angie 统计 API 对象的 build_time 字段以及 -V 命令行选项的输出显示构建时间。

  • nginx 1.27.4 的所有功能,但不包括 keepalive_min_timeout 指令(类似功能自 1.8.0 版本起已存在)。

变更#

  • acme_client 指令中的 enabled=off 参数现在仅禁用给定客户端的证书更新,同时保留所有其他功能;密钥和证书(如果可用)可以通过 $acme_cert_* 变量访问,而使用 $acme_hook_* 变量和 acme 指令不会导致错误。

  • no valid domain name defined for ACME client 错误现在仅在使用 acme 指令引用 ACME 客户端的 server 块中未找到有效(即符合 ACME 规范)的域名时才会发出。

错误修复#

  • 如果使用 NTLS 支持构建,带有变量的 proxy_ssl_certificateproxy_ssl_certificate_key 指令的继承无法正常工作。

软件包#


Angie 1.8.3#

发布日期:2025 年 2 月 13 日。

安全#

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

错误修复#

  • 如果同一连接中的请求属于不同的统计区域,或在请求早期处理时发生错误, 则 HTTP 模块中 server 块的 server 统计数据可能被误计算; 该错误始于 1.8.2 版本。

软件包#

2025 年 1 月 23 日

2025年4月4日

2025年4月7日

Angie 1.8.2#

发布日期:2025 年 2 月 13 日。

安全#

  • 在处理带有 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 质询可能导致工作进程崩溃。

软件包#

2025 年 1 月 23 日

2025 年 1 月 27 日


Angie 1.8.0#

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

功能特性#

  • 通过处理来自 ACME 服务器的 DNS 查询来支持 DNS-01 质询,这允许自动请求任何类型的证书,包括通配符证书。

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

  • ACME 模块记录一些额外信息:证书更新的确切原因、完整域名列表、客户端的账户 ID、长时间不活动(例如轮询)以及正在质询的域名;这些信息简化了故障排除并允许指定 CAA DNS 记录。

  • acme_client 指令的 account_key 参数,允许为 ACME 服务器账户重用现有密钥,而不是自动生成新密钥。

  • 在 stream 和 HTTP 模块的 status_zone 指令中支持变量,允许在单个 locationserver 块中动态统计多个区域;特别是当单个 server 块处理多个虚拟主机时,这非常有用。

  • GZip HTTP 压缩模块与 zlib-ng 2.2.0 及更高版本的兼容性,以前可能会在错误日志中导致 [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 客户端可能超时;该错误在 1.7.0 版本中从 nginx 继承而来。

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

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

  • 某些 SSL 握手可能未计入 Stream 模块的统计。

  • 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 日志记录 错误现在每秒最多报告一次;这有助于避免在 syslog 服务器宕机或过载时用此类消息淹没日志。感谢 Maxim Dounin (freenginx)。

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

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

  • nginx 1.27.1 的所有功能。

错误修复#

  • 使用 systemd 启动时可能出现 PID file ... not readable (yet?) after startFailed to parse PID from file... 错误。感谢 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 类型已更改:bmp 扩展名改为 image/bmprar 扩展名改为 application/vnd.rardebudeb 扩展名设置为 application/vnd.debian.binary-package。感谢 Yuriy Izorkin。

软件包#

2024 年 10 月 24 日

2024 年 11 月 29 日


Angie 1.6.2#

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

安全#


Angie 1.6.1#

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

功能特性#

错误修复#

  • stream 模块中使用虚拟服务器或 pass 指令时, 统计 API 中的连接可能被错误地计数。

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

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

软件包#


Angie 1.6.0#

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

功能特性#

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

  • stream 模块中使用 rdp_preread 指令从 RDP 连接中提取 Cookie 值到 $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 日。

错误修复#

  • 当在 upstream 块中的 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 客户端不会丢弃之前存储的已过期或为不同域名列表签发的证书,而是在续订时使用它们。

软件包#


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 日。

新功能#

问题修复#

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

软件包#

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 指标上。

  • 如果某些到上游服务器的连接尝试立即失败,可能无法在 统计 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 指令中可以指定多个匹配模式, 允许 合并 多个具有相似设置的 location 块, 从而通过减少重复来简化配置。

  • 使用新的 prometheusprometheus_template 指令, 以 Prometheus 格式导出各种统计指标,并支持灵活的模板配置。

  • 在由 api 指令提供的统计接口中,为流上游服务器组提供 详细信息和 指标

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

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

  • 通过由 api 指令提供的接口,在启用 api_config_files 指令后, 可以访问当前工作进程使用的配置文件内容。

  • 在进程标题中显示 配置代数 编号, 允许使用 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 支持。

软件包#

2023年6月13日

2023年7月12日

2023年7月28日

2023年8月18日


Angie 1.1.0#

发布日期:2023 年 1 月 24 日。

功能特性#

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

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

  • 在由 api 指令提供的统计接口中,为 HTTP 上游服务器组提供 详细信息和指标

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

  • nginx 1.23.3 的所有功能。

错误修复#

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

软件包#

2023年3月15日

2023年4月7日

  • 新增 ALT Linux 软件包。

2023年5月11日

2023年5月26日

  • 新增 Astra Linux 特别版软件包。


2022#

Angie 1.0.0#

发布日期:2022 年 10 月 27 日。

功能特性#

  • api 指令,提供 HTTP RESTful 接口,以 JSON 格式访问 Web 服务器实例的基本信息,以及客户端连接、共享内存区域、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 的所有功能。