The release of version 1.2.0 of the high-performance HTTP server and multi-protocol proxy server has been announced “Angie”, a fork of Nginx created by a group of former developers of the project who have left F5 Networks.
The reasons we have extensively described in this article, in which the repercussions of political tensions between the USA and Russia forced the American F5 Nerworks to close all its plants in Russia.
NGINX is an extremely popular open source web server known for its high performance, stability, rich functionality, simple configuration, and low resource consumption. It can handle a large number of simultaneous connections with efficient memory management, making it ideal for high-load applications such as website delivery, reverse proxy with caching, load balancing, security, and SSL acceleration. NGINX is used by a large number of high-profile organizations, including Airbnb, Box, Instagram, Netflix, Pinterest, SoundCloud, Zappos, and many more. It is also often used in microservices environments to orchestrate network traffic between services or to serve static content in large-scale web applications.
It is important to mention that just over 2 years ago, Nginx and F5 jointly announced the final acquisition of Nginx by F5 Network Group, a leader in multicloud application services, for a total enterprise value of $670 million.
However, despite the explanations, doubts and questions remain within the open source community regarding this acquisition and the future of Nginx open source solutions. We can already see a certain direction it is taking. The detractors have in fact decided to continue with their own project.
About Angie The developers of the project describe it like this:
Angie is an efficient, powerful and scalable web server, which was derived from nginx by some of its former lead developers, with the intention of extending the functionality far beyond the original version.
Angie is a direct replacement for nginx, so you can use your existing nginx configuration without making changes that break it.
To support the development of the project and continue to support Nginx users in Russia (remember that it was created by Igor Sysoev, a Russian software engineer, and various blocks have been enforced in Russia due to the ongoing conflict with the Ukraine), the Web Server company was created, which received an investment of 1 million dollars.
Among the co-owners of the new company: Valentin Bartenev (head of the team that developed the Nginx Unit product), Ivan Poluyanov (former head of front-end developers at Rambler and Mail.Ru), Oleg Mamontov (head of the support team technician of NGINX Inc.) and Ruslan Ermilov (ru@FreeBSD.org). Zaur Abasmirzoev, former technical director of slow.ru, has been appointed director of the new company. Igor Sysoev, the founder of Nginx, is not involved in the project.
The release of Angie 1.0.0 is based on the nginx 1.23.2 codebase and includes the following changes:
- Implementation of a RESTful HTTP interface has been added to access basic web server information and client connection statistics, shared memory zones, HTTP requests, HTTP response caching, DNS queries, TCP/UDP sessions created by the stream module and restricted zones implemented using the limit_conn and limit_req modules. Statistics are generated in JSON format. A new “api” directive is provided to enable the RESTful HTTP interface.
- The "status_zone" directive has been added to the "http" module, which defines the zone for collecting statistics on requests processed in the context of the "server" and "location" directives.
- The "status_zone" directive has been added to the "stream" module, which defines the zone for collecting TCP and UDP session statistics.
- The "status_zone" parameter has been added to the "resolve" directive, which defines the zone for accumulating statistics on sent DNS queries.
- Added $angie_version variable with Angie server version.
Angie is a fork of NGINX that aims to expand functionality far beyond the original version. It can be used as a direct replacement for NGINX, meaning you can use your existing NGINX setup without having to make any significant changes.
The first stable release available for installation is Angie 1.0.0. The software is distributed under the BSD 2-Clause “Simplified” license and is freely available on the project's GitHub page. This license permits free commercial use of Angie, as well as modification, distribution and private use.
The Angie web server includes the following built-in modules:
- http_addition_module: a module that allows text to be added both before and after the body of the HTTP response.
- http_auth_request_module: a module that implements client authorization based on the result of a subrequest.
- http_dav_module: a module that extends server functionality to support PUT, DELETE, MKCOL, COPY and MOVE methods.
- http_flv_module: a module for delivering FLV video streams.
- http_gunzip_module: a module that allows you to unpack gzip responses for clients that don't support gzip.
- http_gzip_static_module: a module that sends precompressed gzip files instead of regular files.
- http_mp4_module - a module for delivering MP4 video streams.
- http_random_index_module: a module that processes requests with URIs ending with a slash and selects a random page for each request.
- http_realip_module - a module for changing the client's IP address and other connection parameters.
- http_secure_link_module: A module to protect links from hotlink attacks.
- http_slice_module: a module for serving slices of a file.
- http_ssl_module - a module to provide SSL encryption.
- http_stub_status_module - a module to get basic server statistics.
- http_sub_module: A module that finds and replaces a string in the response body.
- http_v2_module - a module for HTTP/2 support.
- mail: a mail proxy module.
- mail_ssl_module: a module for SSL support for mail.
- stream: a module for TCP/UDP proxy.
- stream_realip_module: a module for modifying the client's IP address and other TCP/UDP connection parameters.
- stream_ssl_module: a module to provide SSL encryption for TCP/UDP streams.
- stream_ssl_preread_module: a module that allows you to read and parse the SSL/TLS protocol while establishing the TCP connection.
Finally, it is mentioned that regarding future plans, there is a significant expansion of the original functionality while maintaining basic compatibility with the Nginx configuration and the ability to use Angie as a replacement for Nginx without significant configuration changes.
Compared to the original NGINX, it is expected to qualitatively improve fault tolerance, increase performance, simplify maintenance, and add additional features for clustered systems.
If you are interested in learning more, you should know that Angie's source code is available under the BSD license and can be found at the following link: https://github.com/webserver-llc/angie