Angie PRO 版本历史#

2026#

Angie PRO 1.11.3#

发布日期:06.02.2026.

安全性#

  • 中间人(MITM)攻击者在使用 TLS 的代理服务器之前,在超出攻击者控制的条件下, 可以在 TLS 握手开始之前向响应中注入明文数据 (CVE-2026-1642); 此修复从 nginx 1.29.5 移植而来。

软件包#

Angie PRO 1.11.2#

发布日期:2026 年 1 月 15 日。

错误修复#

  • 如果禁用了 BPF,HTTP/3 请求可能会失败并显示错误 [alert] sendmsg() failed (90: Message too large) while sending frames; 该错误出现在 1.11.0 版本中。

  • 当启用 BPF 时,在 IPv6 通配符地址上监听时不接受 HTTP/3 请求; 该错误出现在 1.11.0 版本中。

  • 当在 docker_endpoint 指令中指定域名时, 与 Docker API 的连接和上游服务器组的更新不会发生。

软件包#

2026 年 2 月 2 日

2025#

Angie PRO 1.11.1#

发布日期:2025 年 12 月 30 日。

变更#

  • 现在,如果在 acme_http_port 指令中仅指定端口而不指定 IP(默认值), 并且存在监听该端口的 server 块,则 ACME 中该端口的 HTTP 质询处理 仅在这些块的 listen 指令中配置的 IP 地址上工作;不会尝试监听所有 IP 地址, 这与之前的行为不同;这使配置更加灵活,并防止了从以前版本更新时的问题, 即配置中仅存在监听端口 80 和特定 IP 地址的 server 块。

错误修复#

  • HTTP/2 请求未在服务器区域统计中计数; 该错误出现在 1.11.0 版本中。

  • 当 ACME 客户端在配置中被禁用且没有先前获取的证书时, 对该客户端的统计 API 请求可能导致工作进程崩溃。

  • 如果在 server 块内的 status_zone 指令中使用 $http_host$cookie_* 变量作为键,HTTP/3 请求可能不会在此状态区域中计数。

软件包#

Angie PRO 1.11.0#

发布日期:2025 年 12 月 24 日。

变更#

  • HTTP/3 请求中的 $http_host 变量现在从 :authority 伪头部的值初始化, 如果未传递 Host 头部,这对客户端来说是正常的; 以前,与早期协议版本的差异可能会在使用 $http_host 的配置中导致问题。

  • 如果 upstream 组中的所有 HTTP 服务器都不可用或返回错误, 现在在接收到根据 proxy_next_upstream 指令 (及类似指令)被视为错误的状态时,始终返回自己的错误页面, 而不是最后一个服务器的响应;这确保了所有情况下的一致行为。

  • fastcgi.conffastcgi_paramsuwsgi_paramsscgi_params 配置文件中的 REQUEST_METHOD 参数现在通过 $upstream_request_method 变量设置,该变量在配置缓存时对 HEAD 请求 取值 GET;这防止了以前 HEAD 请求可能导致存储空响应的问题, 该响应随后会为 GET 请求提供服务,因为在常见配置中请求方法不是缓存键的一部分。

  • ACME 服务器的最大响应大小现在由 acme_max_response_size 指令 限制,而不是 acme_client 指令的 max_cert_size= 参数; 默认值对大多数情况足够,但如果证书更新以 [error] too big subrequest response while sending to client 错误消息结束,应增加其值。

  • HTTP 模块中 variables_hash_max_size 指令的默认值 增加到 2048,以减少由于近年来添加的新变量而导致的关于次优哈希构建的警告的可能性: [warn] could not build optimal variables_hash, you should increase either variables_hash_max_size: 1024 or variables_hash_bucket_size: 64; ignoring variables_hash_bucket_size

功能#

  • 新的 Metric 模块,支持任意的实时 HTTP 指标收集, 具有完全可配置的聚合方法(计数器、直方图、移动平均等); 它允许在任何阶段跟踪任何请求处理数据,按自定义键分组, 并通过 /status/http/metric_zones/ API 部分(包括 Prometheus 支持)公开指标, 为整个 HTTP 流量提供强大的内置分析工具。

  • 支持 ACME 的 ALPN 验证,通过在 acme_client 指令的 challenge 参数中指定 alpn 启用; 允许在仅保持 HTTPS 端口开放的情况下请求多域证书。

  • 统计 API 的 /status/http/acme_clients/ 部分中的 ACME 客户端信息 和证书请求过程(支持 Prometheus)。

  • 在 HTTP 和流 SSL 模块中添加了对加密客户端 Hello (ECH) 的支持; 新的 ssl_encrypted_hello_key 指令指定包含私钥的文件; $ssl_encrypted_hello 变量包含有关 ECH 使用的信息。 感谢 Maxim Dounin (freenginx)。

  • 使用 image_filter 指令的 convert 参数进行图像格式转换。

  • Image Filter 模块中支持 AVIF 和 HEIC 格式。

  • 在流模块中支持与上游服务器连接的 PROXY protocol V2, 以及使用 proxy_protocol_tlv 指令设置任意 TLV 值的能力, 该指令允许包含变量的字符串。

  • $upstream_request_method 变量,包含上游请求方法, 当启用缓存或设置 proxy_method 时,该方法可能与客户端请求方法不同; 这有助于避免常见的配置问题,即缓存的空 HEAD 响应为 GET 请求提供服务, 以及避免分别缓存 HEADGET 响应。

  • sticky 模式,其中会话仅存储在远程服务器上并始终从中请求, 现在也可在 stream 模块中使用;以前仅在 HTTP 中可用。

  • 在具有远程存储的 sticky 会话模式下,现在也处理响应正文; 这允许从外部存储响应的正文中提取绑定信息,而不仅仅是从头部字段中提取。

  • 消除了为 ACME HTTP 质询定义单独的带有 listen 80 指令的 server 块的需要; 如有必要,可以使用 acme_http_port 指令自定义监听端口。

  • 在导出 Prometheus 指标时计算列表和对象中的项目数的能力; 以尾部斜杠结尾的路径现在返回相应 API 集合中的项目计数。

  • $sent_body 变量,包含子请求或客户端模块的外部请求的响应正文。

  • 邮件代理模块中支持 XOAUTH2 和 OAUTHBEARER 认证机制。 感谢 Rob Mueller 和 Maxim Dounin (freenginx)。

  • sticky 指令的 route 参数现在可以包含任意数量变量的任意字符串。

  • 在 ACME 模块中,现在自动计算续期证书的近似大小, 消除了在为大量域颁发证书时增加 acme_client 指令的 max_cert_size 参数的需要; 该参数保留用于仍需要手动配置的情况。

  • API 的 /status/angie/license 部分中的许可证和限制信息。

  • $upstream_cache_key 变量,包含正在使用的缓存键。 感谢 Kirill A. Korinsky 和 Maxim Dounin (freenginx)。

  • nginx 1.29.3 的所有功能,除了 add_header_inheritadd_trailer_inherit 指令, 由于其设计不佳而被省略。

错误修复#

  • 重新加载和二进制升级过程现在可以正确处理 HTTP/3 连接; 使用 BPF 模块将连接正确路由到所有现有进程。

  • 如果 upstream 组中的所有服务器都不可用或返回错误, 则从最后一个服务器接收错误响应可能被视为成功, 尽管有 proxy_next_upstream 指令设置。

  • 如果 try_files 指令中的路径短于相关 location 块中的前缀, 则使用带有 URI 的 proxy_pass 可能导致工作进程崩溃; 该修复从 nginx 1.29.4 移植而来。

  • 如果 ACME 客户端未通过任何 acme 指令在 stream 块中引用, 则在该块中使用任何相应的 $acme_cert_* 变量将导致配置被拒绝, 并显示 unknown variable 错误;该错误出现在 1.10.3 版本中。

  • 如果配置了将缓存索引保存到文件,则在操作期间进行配置测试可能会以错误结束: [alert] mmap() failed (17: File exists)[alert] munmap() failed (22: Invalid argument)

  • 如果触发了 proxy_cache_convert_head on,则忽略 proxy_method 指令。

  • upstream 块内 server 指令的 fail_timeout 选项指定的超时持续时间 实际上长了一秒。

  • 加载为开源 Angie 版本构建的模块可能会由于 ABI 不兼容而导致问题和崩溃; 现在禁止此类不正确的配置,并显示相关错误消息。

软件包#

Angie PRO 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 块配置在使用引用传入连接的变量时可能导致工作进程崩溃, 而在这种情况下该连接不存在。

  • 通过 Docker 模块 添加到上游组的服务器未被主动探测监控。

  • 流模块中 upstream_probe (PRO) 指令的 send= 参数在指定文件路径时, 对 UDP 探测工作不正确:发送的是路径而不是文件内容。

  • 如果使用了 sticky 指令的 learn 选项并重新加载配置, timeout= 参数可能不会生效,直到至少创建一个新会话。

软件包#


Angie PRO 1.10.2#

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

错误修复#

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

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

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

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

软件包#


Angie PRO 1.10.1#

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

变更#

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

功能#

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

错误修复#

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

  • stream 粘性会话请求上下文之外访问特殊的 $stream_* 变量 会导致工作进程崩溃。

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

Angie PRO 1.10.0#

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

功能特性#

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

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

  • 将一组代理服务器的 stream 会话与 HTTP 请求绑定到外部存储, 可通过 sticky 指令在 learn 模式下使用 remote_actionremote_resultremote_uri 参数进行配置。这使得在集群环境中实现客户端会话持久性, 其中一组负载均衡器共享公共存储,并在会话内将客户端请求路由到同一服务器, 无论哪个负载均衡器接收到请求。

  • sticky 指令(在 learn 模式下)的新 norefresh 参数, 禁用使用时的自动会话续期。

  • sticky 的新会话模式,其中会话仅存储在远程服务器上并始终从中检索。 可以在代理模块中灵活配置远程服务器响应的缓存。

  • 使用 upstream 块中的 backup_switch permanent[=timeout] 指令, 即使主服务器组再次可用后,也能保持备份 stream 服务器处于活动状态。

  • 使用 listen 指令中的 multipath 参数支持通过 MPTCP 协议接受连接。 感谢 Maxim Dounin (freenginx)、Maxime Dourov 和 Anthony Doeraene。

  • 新的 client 块,用于为各种模块发起的内部 HTTP 请求指定额外配置。

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

错误修复#

  • 对于处于 drain 模式的上游服务器, 在根据被动健康检查服务器再次可用后,统计 API 中的停机计数器未停止。

软件包#

2025年7月14日


Angie PRO 1.9.1#

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

功能特性#

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

错误修复#

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

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

  • stream 模块中的代理服务器处于 unhealthy 状态时, 统计 API 中的停机计数器可能已停止或被错误重置。

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

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

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

  • 当处于 drain 模式的代理服务器变为不可用时, 根据 proxy_next_upstream 和类似指令尝试连接到另一台服务器可能不会发生。

软件包#


Angie PRO 1.9.0#

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

功能特性#

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

  • 在 HTTP 模块的 upstream 块中使用 backup_switch permanent[=timeout] 指令, 允许在主组服务器再次可访问时保持备份服务器组处于活动状态。

  • 使用 ssl_early_data 指令在 stream 模块中支持 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 PRO 1.8.3#

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

错误修复#

  • 如果同一连接内的请求属于不同的统计区域, 或者在早期请求处理期间发生错误, HTTP 模块的 server 块中的 status_zone 统计信息可能计算错误; 该错误出现在 1.8.2 版本中。

软件包#

2025年4月4日

2025年4月7日

Angie PRO 1.8.2#

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

安全#

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

软件包#

2025年1月23日

2025年1月27日


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 服务器账户重用现有密钥,而不是自动生成新密钥。

  • 在 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 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 模式,将代理的 stream 服务器切换到新的 draining 状态, 此时只有使用 sticky 模块绑定的请求才会发送到该服务器。

  • $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 的所有功能。

错误修复#

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

  • 使用 systemd 启动时可能出现 PID file ... not readable (yet?) after startFailed to parse PID from file... 错误。感谢 Maxim Dounin (freenginx)。

变更#

  • 根据 RFC 9110 更新了 HTTP 状态码的描述。感谢 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 日


Angie PRO 1.6.2#

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

安全性#


Angie PRO 1.6.1#

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

功能#

  • stream 模块的 status_zone 指令配置的 API 统计 区域中新增 passed 计数器, 用于跟踪使用 pass 指令传递到其他监听套接字的连接。

错误修复#

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

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

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

软件包#


Angie PRO 1.6.0#

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

功能#

  • 基于指定变量值的 HTTP 请求负载均衡, 该变量可从代理服务器或对外部服务的定期轮询中获取, 通过 upstream 块中的 feedback 指令配置; 这允许根据代理服务器的任意指标动态重新分配负载: 各种资源消耗、CPU/内存利用率、队列长度等。

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

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

  • upstream_probe 指令的 persistent 选项, 允许在配置重新加载后避免等待 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 日。

安全性#

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

软件包#


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 协议 自动获取和更新证书, 可通过 acme_clientacme 指令进行配置, 以及形如 $acme_cert_=$acme_cert_key_= 的变量。

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

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

  • 在 Prometheus 中使用 Unix 时间戳格式而非 ISO 8601 格式输出包含日期的 指标, 并且在使用 ?date-epoch 参数请求时也在 JSON API 中使用。

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

  • nginx 1.25.4 的所有功能。

错误修复#

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

软件包#

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 代理模块 中建立到上游服务器的 HTTP/3 连接, 同时允许客户端使用任意 HTTP 版本。通过 proxy_http_version 指令 以及一组 proxy_quic_proxy_http3_ 指令进行配置。

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

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

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

  • HTTP RESTful JSON 接口, 用于在 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 指令中平滑地将代理服务器上线,经过故障后。

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

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

  • nginx 1.25.3 的所有功能。

错误修复#

  • 如果代理服务器是组中的唯一服务器, 可能会在 统计 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 服务器接收响应头或完整响应的平均时间进行负载均衡, 具有可调的平滑因子,使用 upstream 块中的 least_time (PRO)response_time_factor (PRO) 指令。

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

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

  • api 指令提供的统计接口中显示 stream 上游服务器组的详细信息和 指标

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

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

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

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

  • 在进程标题中显示 配置代数 编号, 允许使用 ps 工具监控配置重新加载的成功情况以及先前工作进程代数的数量。

  • nginx 1.25.2 的所有功能。

变更#

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

软件包#


Angie PRO 1.2.0#

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

功能特性#

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

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

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

  • 在使用 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 服务器实例的基本信息, 以及客户端连接、共享内存区域、DNS 查询、HTTP 请求、HTTP 响应缓存、 stream 模块的 TCP/UDP 会话、 limit_conn/limit_req 模块的区域 和 HTTP 上游服务器组指标

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

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

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

  • stream 模块中的 status_zone 指令, 用于指定区域以收集 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 Special Edition 软件包。

2023 年 6 月 13 日

2023 年 7 月 12 日

2023 年 7 月 31 日