Angie 与 nginx 的异同点#

25.08.2023

Angie 项目和 Angie PRO 产品与其前身 nginx 及其商业版本 NGINX Plus 的关系。

Angie vs. nginx Angie vs. nginx

引言#

今天我们将讨论一个让所有了解我们项目的人都感兴趣的话题——Angie 项目和 Angie PRO 产品与其前身 nginx 及其商业版本 NGINX Plus 的关系。通过阅读俄语互联网上的相关讨论,我们发现这些问题仍在被积极讨论;我们将试图阐明所有引起特别关注的问题。

简而言之:不,我们不只是换了个标签。

Angie 与 nginx 的关系#

从一开始,Angie 就被定位为 nginx 的一个分支。这个术语可能是开源软件的基石之一。另一方面,它经常伴随着误解和错误解释。

当一个新项目基于开源项目开始,完全或部分借用其前身的代码时,就会产生分支。借用本身不应引起质疑:这正是创作者最初开放代码的原因。正如经典所说:"百花齐放,百家争鸣。"

新项目通常与其前身没有直接关系:它由不同的人开发,他们对未来有自己的愿景。自然地,分支经常由离开团队的项目前参与者创建。另一种典型情况是商业公司参与开源项目的开发:比如 MariaDB。

同时,分支并非静态副本——如果前身的代码在不断发展,改进和补充会定期整合到新项目中。这正是 Angie 的情况:每次新版本发布时,我们都会"引入"开源版本 nginx 中发生的变化(通常是重大变化)。

最后,我们要指出,Angie 不包含任何来自 NGINX Plus(nginx 的闭源商业版本)的代码;此外,我们的付费 Web 服务器 Angie PRO 也不打算成为 NGINX Plus 的百分百功能复制品。如另一位经典所说:"我们将走一条不同的道路。"

Angie 如何替代 nginx#

Angie 可以完全替代开源版本的 nginx,提供与其前身相应版本相同的功能(关于我们的功能将在下文详述)。

同时,除了熟悉的操作系统和计算架构外,Angie 还有意识地针对一些"官方" nginx 短期内不会支持的平台:包括俄罗斯认证的操作系统,如 ALT Linux、Astra Linux SE 和 RED OS,以及"Baikal"和"Elbrus"处理器。

另一个区别在于我们对第三方模块的处理方式。nginx 受欢迎的原因之一是其可扩展的架构——任何人都可以编写实现新功能的模块并自由公开发布。

随着时间推移,互联网上形成了一个完整的第三方模块生态系统;但是,用户必须自己组装这些模块。我们决定简化他们的工作,在我们的仓库中维护一个统一的 现成软件包集合,利用我们的经验和知识。

Angie 如何改进 nginx#

按照软件行业的标准,nginx 项目创建已有相当长的时间。在此期间,用户积累了许多需求,我们努力在开发 Angie 时考虑这些需求,以适应现代动态 IT 基础设施的需要;简单来说,我们重视速度、配置便利性和监控便利性。此外,我们致力于支持与我们相关的当前标准。

标准和认证#

我们适应我们运营的环境。在项目存在期间,我们已经:

  • 将开发本地化到俄罗斯,并进入了俄罗斯电子计算机和数据库软件统一注册表;

  • 启动了支持符合 GOST 标准加密的积极工作;

  • 实现了对中国使用的多个加密标准的支持(Tongsuo 库的作者甚至 推荐使用我们的产品)。

速度#

我们工作中关注的另一个因素是通过消除不必要的延迟来加速 Web 服务器本身,以及快速适应不断变化的工作条件。我们:

  • 添加了动态配置 API 和自适应 DNS 寻址工具,这有助于绕过前身的结构限制,并在不过度使用资源的情况下更快地更改设置;

  • 实现了用户会话与代理服务器绑定的机制,扩展了 Angie 在不同使用场景下的适用性并节省资源;

  • 引入了代理服务器的主动健康检查,降低了向不工作的服务器发送实际请求的可能性;这减少了请求处理的延迟,提高了最终用户的服务质量;

  • 创建了代理缓存分段的功能,从而更有效地利用所有服务器资源。

可配置性#

我们致力于改进的另一个领域是 Web 服务器配置的灵活性和便利性。我们已经:

  • 添加了上述用于代理服务器组的动态配置 API,简化了 Angie 与现代 IT 基础设施的集成,以及允许动态适应 DNS 寻址变化的设置;

  • 提供了一些其他小但有用的配置选项。

可观察性#

最后,对我们来说,Angie 开发的一个重要方面是监控 Web 服务器和代理服务器的状态。我们已经:

  • 在 API 中实现了检索 Web 服务器基本信息的功能,以及以流行的现代格式提供其运行的所有关键方面的统计数据;

  • 引入了上述代理服务器的主动健康检查,可自主监控其运行状态;

  • 添加了一系列设置,用于收集数据传输会话和地址解析请求的统计信息。

结论#

我们简要概述了 Angie 的主要特性,并突出了我们进一步项目开发的主要优先事项。我们将在另外的文章中详细介绍我们的未来计划以及我们的 Ingress Controller 版本。我们希望现在 Angie 和 nginx 之间的异同点不会引起太多疑问。感谢您一直支持我们!