Similarities and Differences Between Angie and nginx#

25.08.2023

How the Angie project and the Angie PRO product relate to their predecessor, nginx, and its commercial version NGINX Plus.

Angie vs. nginx Angie vs. nginx

Introduction#

Today we will discuss a topic that excites everyone who is getting acquainted with our project — how the Angie project and the Angie PRO product relate to their predecessor, nginx, and its commercial version NGINX Plus. Reading publications in the Russian segment of the Internet, we see that these questions are still actively discussed; we will try to shed light on everything that generates particular interest.

TL;DR: no, we did not just change the label.

How Angie Relates to nginx#

From the very beginning, Angie has been positioned as a fork of nginx. This term is perhaps one of the cornerstones of open source software. On the other hand, it is often accompanied by misunderstandings and misinterpretations.

A fork occurs when a new project begins based on an open-source project, entirely or partially borrowing code from its predecessor. The borrowing itself should hardly raise questions: this is precisely why the creators initially make the code open. As a classic said, "Let a hundred flowers bloom, let a hundred schools of thought contend."

The new project is often not directly related to its predecessor: it is worked on by different people, and they have their own vision for the future. Naturally, forks are often created by former participants of the project who have left the team. Another typical case is the development of an open project with the involvement of a commercial company: just think of an example like MariaDB.

At the same time, a fork is not a static copy — if the predecessor's code is evolving, improvements and additions are regularly incorporated into the new project. This is exactly what happens in Angie: with each new release, we "pull in" changes (often significant) that have occurred in the open version of nginx.

Finally, we note that Angie does not contain any code from NGINX Plus, the closed commercial version of nginx; moreover, we do not aim to make our paid web server, Angie PRO, a one-hundred-percent functional copy of NGINX Plus. As another classic said, "We will follow a different path."

How Angie Substitutes nginx#

Angie can serve as a full replacement for the open version of nginx, providing the same capabilities as the corresponding release of its predecessor (more on our capabilities below).

At the same time, in addition to familiar operating systems and computing architectures, Angie consciously targets platforms for which "official" nginx will not be compiled for a while: these include certified operating systems in Russia, such as ALT Linux, Astra Linux SE, and RED OS, as well as processors "Baikal" and "Elbrus".

Another difference lies in our approach to third-party modules. One of the advantages that contributed to nginx's popularity was its extensible architecture — anyone can write a module that implements new useful functionality and freely publish it for open access.

Over time, an entire ecosystem of such third-party modules has formed on the Internet; however, users had to assemble them themselves. We decided to simplify their lives and maintain a uniform assembly of ready-made packages for a number of these modules in our repositories, utilizing our experience and knowledge.

How Angie Improves nginx#

By the standards of the software industry, the nginx project was created quite some time ago. During this time, users have accumulated numerous requests that we strive to consider as we develop Angie in accordance with the needs of modern dynamic IT infrastructure; put simply, we value speed, ease of configuration, and monitoring convenience. Additionally, we aim to support current standards relevant to us.

Standards and Certification#

We adapt to the conditions in which we operate. During the existence of the project, we have:

  • localized development in Russia and entered the Unified Register of Russian Software for Electronic Computing Machines and Databases;

  • initiated active work to support encryption in accordance with GOST;

  • implemented support for a number of encryption standards used in China (and the authors of the library Tongsuo even recommend us).

Speed#

Another factor we pay attention to in our work is the acceleration of the web server itself by eliminating unnecessary delays, as well as quickly adapting to changing working conditions. We:

  • added a dynamic configuration API and adaptive DNS addressing tools, which help bypass the structural limitations of the predecessor and change settings faster without resource overuse;

  • implemented a mechanism for binding user sessions to the proxied server, which expands the applicability of Angie for different usage scenarios and saves resources;

  • introduced active health checks for proxied servers, reducing the likelihood of sending a real request to a non-working server; this decreases delays in request processing and improves service quality for end users;

  • created the ability to segment the proxy cache, thereby more effectively utilizing all server resources.

Configurability#

Another area where we aim to achieve improvements is in the flexibility and ease of how the web server is configured. We have:

  • added the aforementioned dynamic configuration API for groups of proxied servers, which simplifies Angie's integration with modern IT infrastructure, as well as settings that allow dynamic adaptation to changes in DNS addressing;

  • provided a number of other, smaller yet useful configuration options.

Observability#

Finally, an important aspect of Angie's development for us is monitoring the state of both the web server and the proxied servers. We have:

  • implemented in the API the ability to retrieve basic information about the web server, along with statistics on all key aspects of its operation in popular modern formats;

  • introduced the aforementioned active health checks for proxied servers, which autonomously monitor their operational status;

  • added a family of settings to gather statistics on data transfer sessions and address resolution requests.

Conclusion#

We've briefly outlined the key features of Angie and highlighted our main priorities for further project development. We will provide more details about our future plans, as well as our version of the Ingress Controller, separately. We hope that now the similarities and differences between Angie and nginx will raise fewer questions. Thank you for being with us!