La sortie de la version 1.2.0 du serveur HTTP hautes performances et du serveur proxy multiprotocole a été annoncée "Angie", un fork de Nginx créé par un groupe d'anciens développeurs du projet qui ont quitté F5 Networks.
Les raisons que nous avons décrites en détail dans cet article, dans laquelle les répercussions des tensions politiques entre les États-Unis et la Russie ont contraint l'américain F5 Nerworks à fermer toutes ses usines en Russie.
NGINX est un serveur Web open source extrêmement populaire connu pour ses hautes performances, sa stabilité, ses fonctionnalités riches, sa configuration simple et sa faible consommation de ressources. Il peut gérer un grand nombre de connexions simultanées avec une gestion efficace de la mémoire, ce qui le rend idéal pour les applications à forte charge telles que la livraison de sites Web, le proxy inverse avec mise en cache, l'équilibrage de charge, la sécurité et l'accélération SSL. NGINX est utilisé par un grand nombre d'organisations de premier plan, notamment Airbnb, Box, Instagram, Netflix, Pinterest, SoundCloud, Zappos et bien d'autres. Il est également souvent utilisé dans les environnements de microservices pour orchestrer le trafic réseau entre les services ou pour servir du contenu statique dans des applications Web à grande échelle.
Il est important de mentionner qu'il y a un peu plus de 2 ans, Nginx et F5 ont annoncé conjointement l'acquisition finale de Nginx par F5 Network Group, un leader des services d'application multicloud, pour une valeur d'entreprise totale de 670 millions de dollars.
Cependant, malgré les explications, des doutes et des interrogations subsistent au sein de la communauté open source concernant cette acquisition et l'avenir des solutions open source Nginx. On voit déjà une certaine direction qu'elle prend. Les détracteurs ont en effet décidé de poursuivre leur propre projet.
À propos d'Angie Les développeurs du projet le décrivent ainsi:
Angie est un serveur Web efficace, puissant et évolutif, dérivé de nginx par certains de ses anciens développeurs principaux, dans le but d'étendre les fonctionnalités bien au-delà de la version originale.
Angie remplace directement nginx, vous pouvez donc utiliser votre configuration nginx existante sans apporter de modifications qui la cassent.
Pour soutenir le développement du projet et continuer à soutenir les utilisateurs de Nginx en Russie (rappelez-vous qu'il a été créé par Igor Sysoev, un ingénieur logiciel russe, et que divers blocages ont été appliqués en Russie en raison du conflit en cours avec l'Ukraine), le Web Une société de serveurs a été créée, qui a reçu un investissement de 1 million de dollars.
Parmi les copropriétaires de la nouvelle société : Valentin Bartenev (responsable de l'équipe qui a développé le produit Nginx Unit), Ivan Poluyanov (ancien responsable des développeurs front-end chez Rambler et Mail.Ru), Oleg Mamontov (responsable du support technicien de l'équipe de NGINX Inc.) et Ruslan Ermilov (ru@FreeBSD.org). Zaur Abasmirzoev, ancien directeur technique de slow.ru, a été nommé directeur de la nouvelle société. Igor Sysoev, le fondateur de Nginx, n'est pas impliqué dans le projet.
La version d'Angie 1.0.0 est basée sur la base de code nginx 1.23.2 et inclut les modifications suivantes :
- L'implémentation d'une interface HTTP RESTful a été ajoutée pour accéder aux informations de base du serveur Web et aux statistiques de connexion client, aux zones de mémoire partagée, aux requêtes HTTP, à la mise en cache des réponses HTTP, aux requêtes DNS, aux sessions TCP/UDP créées par le module de flux et aux zones restreintes implémentées à l'aide de limit_conn et les modules limit_req. Les statistiques sont générées au format JSON. Une nouvelle directive "api" est fournie pour activer l'interface HTTP RESTful.
- La directive "status_zone" a été ajoutée au module "http", qui définit la zone de collecte des statistiques sur les requêtes traitées dans le cadre des directives "server" et "location".
- La directive « status_zone » a été ajoutée au module « stream », qui définit la zone de collecte des statistiques de session TCP et UDP.
- Le paramètre "status_zone" a été ajouté à la directive "resolve", qui définit la zone d'accumulation des statistiques sur les requêtes DNS envoyées.
- Ajout de la variable $angie_version avec la version du serveur Angie.
Angie est un fork de NGINX qui vise à étendre les fonctionnalités bien au-delà de la version originale. Il peut être utilisé en remplacement direct de NGINX, ce qui signifie que vous pouvez utiliser votre configuration NGINX existante sans avoir à apporter de modifications importantes.
La première version stable disponible pour l'installation est Angie 1.0.0. Le logiciel est distribué sous la licence BSD 2-Clause "Simplifiée" et est disponible gratuitement sur la page GitHub du projet. Cette licence autorise l'utilisation commerciale gratuite d'Angie, ainsi que la modification, la distribution et l'utilisation privée.
Le serveur Web Angie comprend les modules intégrés suivants :
- http_addition_module : un module qui permet d'ajouter du texte avant et après le corps de la réponse HTTP.
- http_auth_request_module : un module qui implémente l'autorisation du client en fonction du résultat d'une sous-requête.
- http_dav_module : un module qui étend les fonctionnalités du serveur pour prendre en charge les méthodes PUT, DELETE, MKCOL, COPY et MOVE.
- http_flv_module : un module de diffusion de flux vidéo FLV.
- http_gunzip_module : un module qui vous permet de décompresser les réponses gzip pour les clients qui ne prennent pas en charge gzip.
- http_gzip_static_module : un module qui envoie des fichiers gzip précompressés au lieu de fichiers normaux.
- http_mp4_module - un module pour diffuser des flux vidéo MP4.
- http_random_index_module : un module qui traite les requêtes dont les URI se terminent par une barre oblique et sélectionne une page au hasard pour chaque requête.
- http_reali_module - un module pour changer l'adresse IP du client et d'autres paramètres de connexion.
- http_secure_link_module : un module pour protéger les liens contre les attaques par lien dynamique.
- http_slice_module : un module pour servir des tranches d'un fichier.
- http_ssl_module - un module pour fournir le cryptage SSL.
- http_stub_status_module - un module pour obtenir des statistiques de base sur le serveur.
- http_sub_module : module qui recherche et remplace une chaîne dans le corps de la réponse.
- http_v2_module : un module pour la prise en charge de HTTP/2.
- mail : un module proxy de messagerie.
- mail_ssl_module : un module pour le support SSL pour le courrier.
- stream : un module pour proxy TCP/UDP.
- stream_reali_module : un module pour modifier l'adresse IP du client et d'autres paramètres de connexion TCP/UDP.
- stream_ssl_module : un module pour fournir un cryptage SSL pour les flux TCP/UDP.
- stream_ssl_preread_module : un module qui vous permet de lire et d'analyser le protocole SSL/TLS lors de l'établissement de la connexion TCP.
Enfin, il est mentionné qu'en ce qui concerne les plans futurs, il y a une extension significative de la fonctionnalité d'origine tout en maintenant la compatibilité de base avec la configuration Nginx et la possibilité d'utiliser Angie en remplacement de Nginx sans modifications importantes de la configuration.
Par rapport au NGINX d'origine, il devrait améliorer qualitativement la tolérance aux pannes, augmenter les performances, simplifier la maintenance et ajouter des fonctionnalités supplémentaires pour les systèmes en cluster.
Si vous souhaitez en savoir plus, sachez que le code source d'Angie est disponible sous licence BSD et peut être trouvé au lien suivant : https://github.com/webserver-llc/angie