Angie: российский форк nginx, за полтора года занявший своё место в проде
Семёнов Евгений Сергеевич, директор АйТи Фреш. Когда в 2022 году главная команда разработчиков nginx покинула F5 и основала Web Server LLC в Москве, я воспринял это со скепсисом — форки часто умирают за полгода. К весне 2024 картина поменялась: Angie попал в Реестр отечественного ПО, получил несколько серьёзных релизов и стабильно работал у трёх моих клиентов, переехавших с оригинального nginx. Сегодня у нас на практике 12 продакшн-сайтов на Angie, и я готов рассказать, что это даёт и где ловушки.
Кто и зачем сделал Angie
Форк основан в 2022 году командой, которая 15 лет вела оригинальный nginx. Старший разработчик Валентин Бартенев, Руслан Ермилов, автор nginx.com — все ушли из F5 и собрали в Москве компанию Web Server. Цель — продолжать развитие веб-сервера с упором на корпоративные требования и независимость от санкционных рисков. Код лицензирован BSD 2-Clause, открыт в GitLab (github.com/webserver-llc/angie), разработка идёт на русском и английском.
Что улучшили относительно nginx
- Динамический балансировщик — upstream можно менять без reload через API, в Community-версии есть API readonly, в Pro — writable.
- Prometheus-метрики из коробки — директива prometheus_exporter, не надо ставить sidecar.
- Расширенный ACME-клиент — Let's Encrypt интегрирован в Pro-версию на уровне ядра, автоматическое обновление сертификатов.
- Улучшенный HTTP/3 — QUIC собран стабильнее, меньше падений под нагрузкой.
- Модули HAproxy PROXY v2 — для прозрачной передачи реальных IP за L4-балансировщиками.
- Поддержка MQTT — балансировка IoT-трафика нативно.
- NTLM passthrough в stream — корпоративные сценарии с ADFS работают без костылей.
Community vs Pro — что выбрать
| Возможность | Community | Pro |
|---|---|---|
| Базовый веб-сервер и reverse proxy | Да | Да |
| HTTP/2, HTTP/3, TLS 1.3 | Да | Да |
| Prometheus-экспортёр | Базовый | Расширенный |
| Live upstream (без reload) | Чтение | Чтение + запись |
| ACME/Let's Encrypt встроенный | Нет | Да |
| WAF-модуль | Нет | Да |
| OIDC/OAuth2 | Нет | Да |
| Коммерческая поддержка на русском | Форум | SLA 24×7 |
| Сертификат ФСТЭК | Нет | В процессе |
Для обычного коммерческого сайта Community избыточен не будет. Pro беру только для госконтрактов и крупных интернет-магазинов, где нужна быстрая ротация upstream и WAF.
Установка на Debian 12 и AlmaLinux 9
# Debian / Ubuntu
curl -o /etc/apt/keyrings/angie-signing.gpg \
https://angie.software/keys/angie-signing.gpg
echo "deb [signed-by=/etc/apt/keyrings/angie-signing.gpg] \
https://download.angie.software/angie/debian/ bookworm main" \
> /etc/apt/sources.list.d/angie.list
apt update
apt install -y angie
systemctl enable --now angie
# AlmaLinux / Rocky 9
cat > /etc/yum.repos.d/angie.repo << 'EOF'
[angie]
name=Angie repository
baseurl=https://download.angie.software/angie/almalinux/9/$basearch/
gpgcheck=1
gpgkey=https://angie.software/keys/angie-signing.gpg
enabled=1
EOF
dnf install -y angie
systemctl enable --now angie
Миграция конфигов с nginx
Angie совместим с nginx на уровне конфигов целиком. У меня на практике ещё ни разу не было случая, чтобы конфиг nginx не завёлся в Angie. Стандартная процедура миграции занимает 20-30 минут на сервер:
# 1) Бэкап конфига действующего nginx
nginx -T > /root/nginx-current.conf
tar czf /root/nginx-config-$(date +%F).tgz /etc/nginx /var/log/nginx
# 2) Остановка nginx
systemctl stop nginx
systemctl disable nginx
# 3) Установка Angie
apt install -y angie
# 4) Копируем конфиги
cp -a /etc/nginx/* /etc/angie/
chown -R angie:angie /etc/angie
# 5) Правим пути в конфиге, если есть nginx-specific
sed -i 's|/var/log/nginx|/var/log/angie|g' /etc/angie/nginx.conf
sed -i 's|/var/run/nginx.pid|/var/run/angie.pid|g' /etc/angie/nginx.conf
# 6) Проверка
angie -t
systemctl start angie
systemctl status angie
Prometheus-метрики
Одно из главных моих «за» в сторону Angie — встроенный экспортёр Prometheus. В nginx приходилось ставить отдельный контейнер nginx-prometheus-exporter, тянуть данные через stub_status. В Angie — две строчки:
http {
status_zone main;
server {
listen 127.0.0.1:9090;
location /p8s {
prometheus all;
access_log off;
}
}
server {
listen 443 ssl http2;
server_name example.ru;
status_zone example.ru;
location /app {
status_zone app_backend;
proxy_pass http://app_upstream;
}
}
}
На 127.0.0.1:9090/p8s появляется полный набор метрик: запросы на зоне, upstream latency, 2xx/4xx/5xx, соединения, SSL handshakes. Цепляем Prometheus, строим Grafana-дашборд за 15 минут.
Live-конфигурация upstream
В Community-версии статус upstream доступен только на чтение:
curl http://127.0.0.1:9090/status/upstreams/app_upstream
В Pro — можно добавлять и удалять серверы без reload:
curl -X POST http://127.0.0.1:9090/status/upstreams/app_upstream/servers \
-d '{"server":"10.0.0.5:8080","weight":2,"backup":false}'
curl -X DELETE http://127.0.0.1:9090/status/upstreams/app_upstream/servers/1
Для CI/CD это удобно: деплой скрипт выводит старый upstream из ротации, обновляет приложение, возвращает его обратно — без service reload и без обрыва keep-alive соединений.
Реальный кейс: перевод 12 сайтов клиента
В октябре 2024 обратился клиент — издательский дом в центре Москвы. 12 сайтов (порталы, магазин, личный кабинет), все на оригинальном nginx 1.22 в Debian 11, за балансировщиком HAProxy. Задача: перейти на российское ПО из Реестра для 223-ФЗ тендера. Миграция должна была пройти без даунтайма.
Провели одно утро в субботу. Схема:
- На серверах по очереди (из-под HAproxy выводили по одному).
- На каждом: бэкап конфига, установка Angie, копирование конфига, проверка angie -t, запуск.
- Smoke-test на 5 URL: главная, поиск, личный кабинет, API, статика.
- Возврат в HAproxy-ротацию.
Один сервер выпал: в конфиге было nginx в директиве server_tokens nginx; — не влияет на работу, но мы заметили и почистили. За 3.5 часа перевели все 6 фронтовых нод. Даунтайма не было, нагрузка на CPU стала ниже на 4-6% благодаря улучшенному HPACK-декодеру HTTP/2. Стоимость работ — 38 000 руб., тендер заказчик выиграл.
Где Angie ведёт себя не так, как nginx
- Путь конфига по умолчанию —
/etc/angie/, пользователь —angie. Скрипты мониторинга, которые лезли за/etc/nginx/, придётся поправить. - Команда называется
angie, но symlink/usr/sbin/nginxостался — для обратной совместимости. - Статусная страница stub_status работает, но современный путь — через Prometheus-экспортёр.
- Некоторые сторонние модули, скомпилированные под конкретную версию nginx, нужно пересобирать под Angie — но почти всегда без правки кода.
- Пакеты обновляются в своём репозитории, поэтому nginx из стандартного репо нужно хвостом заблокировать (apt-mark hold nginx), чтобы он не восстановился при dist-upgrade.
Мониторинг и логи
# Лог-файлы по умолчанию
tail -F /var/log/angie/access.log /var/log/angie/error.log
# Основные метрики Prometheus
curl -s 127.0.0.1:9090/p8s | grep -E 'angie_http_(request|response|upstream)'
# Проверка конфига
angie -t
angie -V # версия и флаги сборки
Мигрируем ваш веб-сервер на Angie
Перевожу с nginx на Angie без даунтайма: аудит конфигов, подготовка, перенос за одно техокно, настройка Prometheus и Grafana-дашбордов. В АйТи Фреш мы держим 8 серверов Dell Xeon Platinum 8280 в дата-центре МТС Москва и обслуживаем 30+ клиентских веб-инфраструктур. Типовая миграция — 1 рабочий день, стоимость от 18 000 руб.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы о Angie
- Angie полностью совместим с nginx?
- Да, конфигурации nginx работают в Angie без изменений. Форк делала команда основных разработчиков nginx, совместимость на уровне синтаксиса полная.
- Что даёт Angie Pro по сравнению с Community?
- Pro добавляет live-конфигурацию upstream без reload, расширенный Prometheus-экспортёр, OIDC, WAF-модуль, mTLS между узлами, русскоязычную enterprise-поддержку. Community достаточно для большинства веб-проектов.
- Как мигрировать с nginx на Angie?
- Простейший путь: остановить nginx, удалить пакет, установить angie, указать тот же путь к конфигам. Перед остановкой сохраните бэкап через nginx -T.
- Есть ли проблемы с сертификацией ФСТЭК?
- Angie включён в Реестр российского ПО Минцифры с 2022 года, что закрывает 223-ФЗ и 44-ФЗ. Сертификат ФСТЭК готовит Pro-редакция. Для коммерческих организаций без госсертификатов достаточно Community.
- Производительность отличается от nginx?
- На одинаковой нагрузке — в пределах 1-3% расхождения. Angie добавил несколько оптимизаций, но разница на обычных веб-нагрузках не ощущается.