Найти в Дзене

Туда, где меньше костылей: знакомство с Angie

Уже какое-то время я все чаще натыкаюсь на упоминания об 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 начинает скрипеть.

Алексей Кузьмин | IT DevOps SEO Продвижение на маркетплейсах