Angie PRO 版本历史#

Angie PRO 1.8.2#

发布日期: 13.02.2025.

安全性#

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

错误修复#

  • stream 模块中使用 upstream_probe (PRO) 指令配置的主动探测 可能导致工作进程崩溃。

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

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

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

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

软件包#


2024#

Angie PRO 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 PRO 1.8.0#

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

功能#

  • 对一组代理服务器进行 HTTP 会话绑定,并请求外部存储,可通过 sticky 指令在 learn 模式中使用 remote_actionremote_result 参数进行配置;这允许在集群模式下将客户端会话绑定到平衡服务器,当一组负载均衡器通过共享存储统一时,将客户端请求在一个会话内引导到同一服务器,无论它们命中哪个负载均衡器。

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

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

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

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

  • 在流和 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 客户端可能会超时;此错误继承自 nginx 版本 1.7.0。

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

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

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

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

  • 在启用 NTLS 支持的情况下,proxy_ssl_certificate 指令在通过 HTTP/3 代理时未能正常工作。

变更#

软件包#


Angie PRO 1.7.0#

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

功能#

  • 从组中移除代理服务器时强制关闭所有连接;可以通过 proxy_connection_dropgrpc_connection_dropfastcgi_connection_dropscgi_connection_dropuwsgi_connection_drop 指令进行配置,其值可以通过 API 请求connection_drop 参数在本地覆盖,以实现服务器移除。

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

  • feedback (PRO) 负载均衡现在可以在 stream 模块中使用;它根据指定的变量分配 TCP/UDP 会话,该变量可以从代理的上游服务器或对外部服务的定期请求中获得。这允许根据代理服务器的任意指标(如资源消耗、CPU/内存利用率和队列长度)进行动态负载均衡。

  • feedback (PRO) 指令的 last_byte 选项,允许在接收到整个响应后处理上游服务器反馈,而不仅仅是处理头部。

  • feedback (PRO) 负载均衡方法现在接受浮点数作为变量值。

  • least_time (PRO) 指令的 account 参数,允许使用变量指定哪些请求被视为 least_time 负载均衡的对象,包括仅考虑 upstream_probe (PRO) 请求。

  • least_time (PRO) 指令的 factor 参数,允许为 least_time 负载均衡器指定可调的平滑因子,并覆盖用于统计收集的 response_time_factor (PRO) 的值。

  • 一种 drain 模式,将代理流服务器切换到新的 draining 状态,此时只有使用 sticky 模块绑定的请求被发送到服务器。

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

  • 通过 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 选项./configure 脚本以优化构建多个模块或进行交叉编译时缓存其结果。

  • 所有功能 nginx 1.27.1

错误修复#

  • queue (PRO) 指令配置的排队请求的等待超时可能会导致工作进程崩溃。

  • 启动时可能会出现 PID file ... not readable (yet?) after startFailed 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 扩展;对于 debudeb 扩展设置为 application/vnd.debian.binary-package。感谢 Yuriy Izorkin。

软件包#

2024年10月24日


Angie PRO 1.6.2#

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

安全性#


Angie PRO 1.6.1#

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

功能#

错误修复#

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

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

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

软件包#


Angie PRO 1.6.0#

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

功能#

  • 根据指定变量的值进行 HTTP 负载均衡,该变量可以从代理的上游服务器或对外部服务的定期请求中获得,使用 feedback 指令在 upstream 块中;这允许特别是根据代理服务器的任意指标动态平衡负载:各种资源的消耗、CPU/内存利用率、队列长度等。

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

  • 使用 rdp_preread 指令从 RDP 连接中提取 Cookie 值 到 $rdp_cookie$rdp_cookie_NAME 变量中, 这允许在负载均衡的同时记录并绑定 RDP 客户端会话到特定服务器。

  • persistent 选项 的 upstream_probe 指令, 允许在配置重载后避免等待 essential 探测 对于之前健康的服务器。

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

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

  • $upstream_probe 变量 包含由 upstream_probe 发出的正在进行的探测的名称。

  • ACME 模块中支持 BoringSSL

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

错误修复#

  • 活跃的 upstream_probe 探测在某些配置中可能无法正常工作,同时记录错误消息如 [alert] getsockname() failed (9: Bad file descriptor)

  • 通过 ACME 协议的证书请求在某些配置中可能会导致错误,且日志消息如 [alert] getsockname() failed (9: Bad file descriptor)

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

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

软件包#


Angie PRO 1.5.2#

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

安全性#

软件包#


Angie PRO 1.5.1#

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

错误修复#

  • 当通过 API 编辑一组代理服务器时,proxy_next_upstream 机制未能正常工作,并且当在 HTTP 块中的 server 指令使用 resolve 选项时,如果解析的 IP 地址数量与指定服务器的数量不同。

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

  • learn 模式下的 sticky 指令在指定的 lookupcreate 变量数量不同的情况下可能会不正确地工作。

  • stream 模块中代理 TCP 连接时,slow_start 机制未能正常工作。

  • 如果以 TLS 1.3 提前数据的形式接收,HTTP/3 请求可能导致错误;此错误在 1.4.0 中出现。

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

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

变更#

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

软件包#

2024年5月27日

  • Alpine 3.20 添加了软件包。


Angie PRO 1.5.0#

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

功能#

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

  • 一个 drain 模式,当仅向服务器发送使用 sticky 模块绑定的请求时,将代理的 HTTP 服务器切换到新的 draining 状态。

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

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

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

  • nginx 1.25.4 的所有功能。

错误修复#

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

软件包#

2024年3月28日

2024年4月16日

2024年4月25日


Angie PRO 1.4.1#

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

安全性#

  • 使用 HTTP/3 时,处理特制的 QUIC 会话时可能在工作进程中发生段错误 (CVE-2024-24989); 请注意,Angie PRO 自 1.4.0 起已不再易受 CVE-2024-24990 的影响。

软件包#

2023#

Angie PRO 1.4.0#

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

功能#

  • 支持在 HTTP proxy module 中建立 HTTP/3 连接到上游服务器,同时允许客户端使用任意 HTTP 版本。配置通过 proxy_http_version 指令及一组 proxy_quic_proxy_http3_ 指令完成。

  • upstream_probe (PRO) 指令用于通过定期创建测试连接或发送数据报来检查 stream 模块中服务器的健康状况。

  • sticky 指令的附加 learn 模式,用于将会话绑定到代理服务器,允许发现会话并将其保存在服务器的共享内存中。

  • 等待队列用于无法首次尝试负载均衡的请求,通过在 HTTP 模块的 upstream 块中使用 queue (PRO) 指令配置。

  • HTTP RESTful JSON interface 用于在 stream 模块的 upstream 块中重新配置、添加或删除服务器,以及用于持久化这些更改的 state 指令。

  • 通过平均建立连接时间、接收响应的第一个或最后一个字节的时间,对代理的 stream upstream 服务器进行负载均衡,使用 least_time (PRO)response_time_factor (PRO) 指令在 upstream 块中进行可调平滑因子。

  • 通过 api 指令提供的接口,获取代理的 stream upstream 服务器的平均建立连接时间、接收响应的第一个和最后一个字节的统计信息,并能够通过 upstream 块的 response_time_factor (PRO) 指令调整平均平滑因子。

  • 使用 slow_start 选项,在 upstream 块中的 server 指令中平滑地将代理服务器上线,经过故障后。

  • mqtt_preread 指令在 stream 模块中,允许从 MQTT 协议的 CONNECT 数据包中提取用户名和客户端 ID 到 $mqtt_preread_username$mqtt_preread_clientid 变量中。

  • 通过 mp4_limit_ratemp4_limit_rate_after 指令,按比特率限制传输到客户端的 MP4 文件的响应速率,从而减少带宽负载。

  • nginx 1.25.3 的所有功能。

错误修复#

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

变更#

  • 现在代理服务器处于 checking 状态的时间不计入 downtime

  • 标准 prometheus_all.conf 模板包括所有额外的 Prometheus 指标和仅由 PRO 版本公开的可能 state 值。

软件包#

2023年12月25日

2024年1月22日


Angie PRO 1.3.2#

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

错误修复#

  • 激活的 健康探测 带有 essential 标志时 错误处理了服务器从 checkingunhealthy 的转换, 当初始检查失败时,导致用户请求被路由到故障服务器。

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

2023年12月12日


Angie PRO 1.3.1#

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

安全性#

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

软件包#

2023年10月26日

2023年11月13日


Angie PRO 1.3.0#

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

新特性#

  • location 指令中指定多个匹配模式的能力, 允许 组合 多个具有相似设置的 location 块,从而通过减少重复来简化配置。

  • 通过平均时间对代理 HTTP 服务器的响应头或完整响应进行负载均衡, 使用可调平滑因子,通过 least_time (PRO)response_time_factor (PRO) 指令 在 upstream 块中。

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

  • 代理 HTTP 服务器的响应头和完整响应的平均时间统计信息, 在 api 指令提供的接口中,能够通过 response_time_factor (PRO) 指令 调整平均平滑因子在 upstream 块中。

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

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

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

  • 使用 bind_conn (PRO) 指令在 http 模块的 upstream 块中将客户端连接绑定到后端服务器连接,特别用于代理 使用 NT LAN Manager (NTLM) 认证的连接。

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

  • 在进程标题中显示 configuration generation 编号, 这允许监控配置重新加载的成功与否以及之前工作进程生成的数量, 使用 ps 工具。

  • 所有 nginx 1.25.2 的功能。

变更#

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

软件包#


Angie PRO 1.2.0#

发布日期:2023年8月15日。

新特性#

  • HTTP RESTful JSON 接口 用于重新配置、添加或 删除 HTTP 模块的 upstream 块中的服务器,以及用于持久化这些更改的 state 指令。

  • upstream_probe (PRO) 指令定期发送探测请求,以检查 HTTP 模块的 upstream 块中服务器的健康状态。

  • HTTP 代理模块中支持缓存分区, 使得可以根据任意响应参数在不同目录(驱动器)中缓存响应, 通过新的 path- 选项在 proxy_cache 指令中进行配置。

  • 当使用 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 支持。

变更#

软件包#


Angie PRO 1.1.0-p1#

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

新特性#

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

  • $upstream_sticky_status 变量可以是 newhitmiss,取决于请求相关上游服务器的成功与否, 并启用粘性会话。


Angie PRO 1.1.0#

发布日期:2023年2月7日。

新特性#

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

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

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

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

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

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

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

  • 通过 server_tokens 指令可以任意配置默认错误页面和 Server 响应头字段中的签名。

  • $angie_version 变量显示 Angie 的版本。

  • 所有 nginx 1.23.3 的功能。

软件包#

2023年4月7日

  • ALT Linux 添加软件包。

2023年5月12日

2023年5月26日

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

2023年6月13日

2023年7月12日

2023年7月31日