Уже какое-то время я все чаще натыкаюсь на упоминания об Angie — в статьях, обсуждениях, примерах конфигураций. Это форк nginx, который развивают ребята из бывшей core-команды(к тому же — продукт российский, и сам веб-сервер внесён в реестр отечественного ПО).
Angie во многом совместим с nginx, но у него изначально упор на современные сценарии: микросервисы, API, WebSockets и т.п.
Я смотрел на него скорее из любопытства… пока не столкнулся с задачей, где разница становится очень заметной.
Допустим, у вас есть такой сценарий:
/api/users → сервис №1
/api/orders → сервис №2
/api/admin → отдельный сервис + авторизация
На бумаге всё звучит просто. Но если попытаться собрать это на nginx, начинается хорошо знакомый квест:
- куча location-блоков
- переменные, которые нужно тащить между блоками
- поддержка Upgrade для WebSocket’ов
- отдельная логика для разных upstream’ов
- ручная сборка хедеров
Через пару итераций конфиг превращается в слоёный пирог, где каждый новый маршрут — маленькая архитектурная боль.
Работает, но выглядит всё это так, будто сервер просит пощады.
🚀 А вот как ведёт себя Angie
Такой сценарий можно разложить спокойно и без танцев с бубном: разнести сервисы, использовать отдельные upstream-блоки, health-checks и при этом не городить монстра из конфигов — за счёт более современной логики и нормального проектирования.
То есть ты решаешь ту же задачу, но:
✅ структура чище
✅ логика понятнее
✅ риск ошибиться ниже
✅ расширять конфиг проще
Давайте посмотрим на прикрепленную картинкой часть конфига:
1. health_check: в Angie можно указывать health_check прямо в upstream. Это даёт оперативное исключение упавших бэкендов из пула без сторонних инструментов.
2. proxy_upgrade on — упрощает настройку WebSocket-проxies (вместо пары proxy_set_header Upgrade и Connection "upgrade").
И самое приятное — всё выглядит так красиво, как будто так и должно работать изначально, без тех костылей, которые тянет за собой nginx.
Если проект растёт, появляются сервисы, маршруты, отдельные API-ветки и требуются health-checks — nginx начинает скрипеть.