Angie: современный форк Nginx 2026

Рейтинг: 52.9% · 8 голосов
Самый подробный курс по Nginx - от первого конфига до production API-gateway. Архитектура и event loop, контексты и location, виртуальные хосты, статика, reverse proxy и upstream-балансировка, кэширование, HTTPS и TLS (post-quantum), HTTP/2 и HTTP/3 QUIC, безопасность и rate limiting, realip, JSON-логи и сквозная трассировка, метрики, тюнинг и траблшутинг. Плюс OpenResty (Lua, фазы, JWT, динамика) и Angie (нативные Prometheus, ACME, dynamic upstream). На основе эталонного gateway и лучших практик. Для новичков и SRE/DevOps. Актуально на 2026 (nginx 1.30/1.31, Angie, ingress-nginx EOL -> Gateway API).
Ответить
Аватара пользователя
Igor_NgINX
Сообщения: 44
Зарегистрирован: 11 май 2026, 05:31

Angie: современный форк Nginx 2026

Сообщение Igor_NgINX »

Оглавление курса (44)
  1. Что такое Nginx и почему он захватил веб
  2. Установка Nginx, Angie и OpenResty: пакеты, версии, Docker
  3. Первый конфиг с нуля: минимальный сервер за 5 минут
  4. Архитектура процессов: master, worker и event loop
  5. Анатомия конфигурации: контексты, наследование и модульность
  6. Виртуальные хосты: server и server_name
  7. Директива location: матчинг и приоритеты по шагам
  8. Раздача статики: root, alias, try_files, sendfile
  9. Переменные, map и блок if
  10. rewrite, return и канонизация URL
  11. Работа с заголовками: add_header и proxy_set_header
  12. Модель доверия прокси-заголовков: realip и защита от спуфинга
  13. Сжатие: gzip, brotli и zstd
  14. Reverse proxy: proxy_pass и проброс запроса
  15. upstream и балансировка нагрузки
  16. Таймауты, повторы и устойчивость прокси
  17. FastCGI и PHP: nginx + PHP-FPM (и uwsgi/scgi)
  18. WebSocket, gRPC и стриминг через Nginx
  19. Кэширование ответов: proxy_cache и микрокэш
  20. HTTPS и TLS: сертификаты, протоколы, шифры (2026)
  21. Let's Encrypt и ACME: certbot, acme.sh, нативный ACME Angie
  22. HTTP/2 и HTTP/3 (QUIC) в 2026
  23. Безопасность: заголовки, скрытие версии, ограничения
  24. Rate limiting и защита от перегрузки
  25. Контроль доступа: allow/deny, auth_basic, auth_request и mTLS
  26. Логирование: access_log, форматы и структурированный JSON
  27. Сквозная трассировка запросов и OpenTelemetry
  28. Метрики и мониторинг Nginx
  29. Производительность и тюнинг под нагрузку
  30. Траблшутинг: 502, 504, 403, 404 и debug-лог
  31. OpenResty: Nginx как платформа на LuaJIT
  32. Фазы обработки запроса и Lua-хуки
  33. Lua API: ngx.*, shared dict, cosocket и lua-resty-core
  34. Практика OpenResty: авторизация, JWT, кэш, Redis
  35. Angie: современный форк Nginx 2026 (вы здесь)
  36. Динамическая конфигурация и service discovery
  37. Nginx как API-gateway и Kubernetes Gateway API
  38. Динамические модули, njs и WAF
  39. Stream-модуль: проксирование TCP и UDP
  40. Деплой, перезагрузка и конфиг как код
  41. Сценарий: статика, SPA и кэширование за CDN
  42. Сценарий: микросервисный gateway по образцу ngx-trace-gateway
  43. Капстоун: собираем production-gateway с нуля
  44. Чек-лист безопасности, CVE 2026 и аудит конфигурации
Ты собрал боевой шлюз на nginx, всё работает - и упёрся в стену. Хочешь видеть метрики апстримов в Prometheus - ставишь сторонний exporter и парсишь stub_status. Хочешь вывести один бэкенд из ротации без reload - не выйдет, в open-source nginx нет API для этого. Хочешь активные health-проверки, чтобы шлюз сам стучался в /healthz и выкидывал дохлый сервер ДО того, как туда прилетит живой трафик - это есть только в платном nginx Plus за деньги. Хочешь Let's Encrypt без зоопарка из certbot и cron - опять костыли. Каждая из этих хотелок в мире nginx решается внешними инструментами, и каждый такой инструмент - это ещё один процесс, ещё один конфиг, ещё одна точка отказа.

И вот тут на сцену выходит angie - форк nginx, который закрывает почти все эти дыры прямо в ядре, бесплатно. Это не очередная обёртка и не панель управления поверх nginx. Это сам веб-сервер, переписанный и расширенный людьми, которые когда-то писали оригинальный nginx. В этом уроке разберём, что такое angie, чем он отличается от nginx, и пощупаем руками две киллер-фичи: нативные метрики через /status и динамическое управление upstream без перезагрузки.

Что такое angie и откуда он взялся

Коротко по родословной. nginx написал Игорь Сысоев, потом проект купила Nginx Inc., потом её купила F5. Часть оригинальной команды разработчиков основала компанию "Веб-Сервер" (РФ) и в 2022 году выпустила angie - форк, который развивается отдельно. Это важно понимать: angie делают не сторонние энтузиасты, а люди, годами писавшие сам nginx. Отсюда и качество, и совместимость.

Главная мысль про angie - это drop-in замена. Архитектура та же: мастер-процесс, воркеры, event-loop на epoll, те же фазы обработки запроса, те же модули. Конфиги nginx работают в angie как есть. Миграция в типичном случае - это поставить пакет: останавливаешь nginx, ставишь angie из их репозитория, он подхватывает твой /etc/nginx (или /etc/angie), и всё едет. Те же директивы server, location, upstream, proxy_pass, те же переменные $remote_addr, $upstream_response_time, $request_id. Ты не переучиваешься - ты получаешь надстройку.

Версии на 2026 год, чтобы не путаться. Стабильная ветка - примерно angie 1.11.6 (вышла 25 мая 2026, собрана на базе кода nginx 1.29.3). Параллельно идёт ветка 1.12 на базе более свежего nginx 1.31.1. Релизы выходят поквартально, команда стабильно подтягивает наработки из основного nginx плюс свои фичи. То есть angie не отстаёт от nginx по части security-патчей и базовых возможностей - он идёт вровень и добавляет сверху.

Сравни структуру решения "что нужно для прода":

Код: Выделить всё

nginx OSS:   nginx + prometheus-exporter + certbot + cron + (нет dynamic upstream) + (нет active HC)
nginx Plus:  всё в одном, но платно и дорого
angie OSS:   angie + /status JSON + Prometheus + native ACME + dynamic upstream API - бесплатно
Изображение

Angie против nginx: что даёт сверху бесплатно

Теперь по существу - чем angie богаче ванильного nginx в open-source редакции. Это и есть ответ на вопрос "angie против nginx, зачем менять".

1. Нативные метрики: /status JSON + Prometheus + Console Light. В nginx у тебя есть только stub_status - семь чисел про соединения, и всё. В angie встроен полноценный REST API /status, который отдаёт детальный JSON: разбивка по http-зонам, по каждому upstream и каждому серверу в нём (состояние, число запросов, ошибки, тайминги), по кэшам, по resolver-ам, по shared-memory зонам. Тот же endpoint умеет отдавать данные в формате Prometheus - то есть Grafana подключается без отдельного exporter-а. А ещё есть Console Light - лёгкая визуальная панель прямо в браузере, где всё это видно глазами в реальном времени. Это про "angie prometheus" и "angie api" - две самые гуглимые фичи.

2. Динамическое управление upstream без reload. В nginx, чтобы поменять список бэкендов, ты правишь upstream-блок и делаешь nginx -s reload. Reload поднимает новые воркеры, и хоть он и graceful, под нагрузкой это не бесплатно. В angie API умеет PUT/PATCH/DELETE по разделу /config - можно добавить сервер в upstream, пометить его как down, поменять вес, и всё это атомарно, без перезагрузки и без потери соединений. Это огромная вещь для деплоев и автоскейлинга.

3. Нативный ACME. Angie умеет сам получать и продлевать сертификаты Let's Encrypt прямо из конфига - директивы acme и acme_client, поддержка ECDSA. Никакого certbot, cron и хуков. В ванильном nginx такого в ядре нет (там либо certbot, либо ACME через njs-модуль).

4. Нативный Zstd. Сжатие zstd (zstd on; zstd_static on;) встроено в angie. В nginx zstd только через сторонний модуль, который надо собирать. Zstd при близком к gzip уровне сжатия заметно быстрее по CPU.

5. Service discovery по меткам Docker. С версии 1.10 angie умеет автоматически наполнять upstream серверами по меткам Docker/Podman-контейнеров. Запустил контейнер с нужным label - он сам появился в балансировке. Без внешних Consul-template и подобного.

6. Здоровье апстримов и slow_start. В open-source nginx есть только пассивные проверки - max_fails и fail_timeout: сервер помечается дохлым, только когда в него реально прилетел запрос и упал. Active health checks (когда сам сервер периодически стучится в бэкенд и проверяет его ДО трафика) и slow_start (плавный прогрев восстановившегося сервера, чтобы не уронить его лавиной) в мире nginx - привилегия платного Plus. Angie приносит эти механизмы в свою экосистему (модуль upstream_probe для активных проверок, опция slow_start у server) - и в open-source ты как минимум получаешь честное состояние recovering у пиров, а полноценные активные пробы доступны в редакции PRO. Плюс HTTP/3 к апстриму, мониторинг stream/MQTT-сессий, привязка воркеров к NUMA-узлам.

Практика: метрики /status и динамический upstream из коробки

Хватит теории, потрогаем. Поднимаем минимальный конфиг angie с API. Файл /etc/angie/http.d/api.conf (структура каталогов как у nginx):

Код: Выделить всё

upstream backend {
    zone backend 1m;            # shared-memory зона ОБЯЗАТЕЛЬНА для статистики и для API
    server 10.0.0.11:9000;
    server 10.0.0.12:9000;
    keepalive 32;
}

server {
    listen 80;
    server_name _;

    location /api/ {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }

    # Внутренний server для метрик и управления - закрываем по IP
    location =/status {
        api /status/;          # REST API: детальный JSON
        allow 127.0.0.1;
        allow 10.0.0.0/8;
        deny all;
    }

    location =/p8s {
        prometheus all;        # тот же сервер отдаёт Prometheus-формат
        allow 127.0.0.1;
        allow 10.0.0.0/8;
        deny all;
    }
}
Ключевой момент - zone backend 1m; внутри upstream. Без этой строки angie не ведёт статистику по серверам и не пускает API менять группу. Это shared-memory зона, общая для всех воркеров; в неё angie складывает счётчики и состояние пиров. Один мегабайт с запасом хватает на десятки серверов.

Проверяем конфиг и перезагружаем: angie -t и angie -s reload (бинарь называется angie, но всё как у nginx). Теперь дёргаем статус:

Код: Выделить всё

$ curl -s http://127.0.0.1/status/http/upstreams/backend/peers/ | jq .
{
  "10.0.0.11:9000": {
    "server": "10.0.0.11:9000",
    "state": "up",
    "selected": { "current": 2, "total": 1841 },
    "responses": { "200": 1798, "500": 4 },
    "data": { "sent": 9123847, "received": 41238472 },
    "health": { "fails": 0, "unavailable": 0 }
  },
  "10.0.0.12:9000": {
    "server": "10.0.0.12:9000",
    "state": "up",
    "selected": { "current": 1, "total": 1836 },
    ...
  }
}
Видишь? Это не семь чисел из stub_status. Это состояние каждого пира, разбивка ответов по кодам, объёмы трафика, счётчики ошибок - и всё по одному GET-запросу, в чистом JSON. Скорми этот endpoint в Grafana через /p8s, и у тебя дашборд по апстримам без единого стороннего демона.

Теперь самое вкусное - динамическое управление без reload. Допустим, сервер 10.0.0.12 надо вывести на обслуживание. В nginx ты бы правил конфиг и делал reload. В angie - один HTTP-запрос:

Код: Выделить всё

$ curl -X PATCH http://127.0.0.1/status/config/http/upstreams/backend/servers/10.0.0.12:9000/ \
       -d '{"down": true}'

# сервер мгновенно помечен down, новый трафик на него не идёт.
# вернуть в строй:
$ curl -X PATCH http://127.0.0.1/status/config/http/upstreams/backend/servers/10.0.0.12:9000/ \
       -d '{"down": false}'

# добавить новый сервер в группу на лету:
$ curl -X PUT http://127.0.0.1/status/config/http/upstreams/backend/servers/10.0.0.13:9000/ \
       -d '{"weight": 5, "max_fails": 3}'
Никакого reload, никакого пересоздания воркеров. Изменение атомарно применяется во всех воркерах через ту самую shared-memory зону. Это ровно то, за что в мире nginx надо платить за Plus. В CI/CD это значит: задеплоил новую версию на новый набор хостов, добавил их в upstream через API, прогрел, убрал старые - и пользователь ничего не заметил.

Open-source против PRO и типичные грабли

У angie две редакции. Open-source (то, что мы трогали) - это уже /status JSON, Prometheus, Console Light, dynamic upstream API, ACME, Zstd, Docker-discovery. Этого хватает большинству. Angie PRO - платная, добавляет полноценные активные health-пробы (upstream_probe со сложными сценариями), расширенные алгоритмы балансировки, управление сертификатами и апстримами прямо из Console Light кнопками, и прочее enterprise. Логика простая: базовую наблюдаемость и динамику ты получаешь даром, а за самые тяжёлые SLA-фичи - платишь, и всё равно дешевле и честнее, чем nginx Plus.

Теперь грабли, на которых спотыкаются при переезде на angie:
  • Забыл zone в upstream. Нет zone - нет статистики по серверам и нет управления через API. Самая частая ошибка. API молча не покажет пиров.
  • Открыл /status наружу. Этот endpoint раскрывает всю внутрянку и позволяет менять конфиг. Закрывай по IP (allow/deny) или вешай на отдельный внутренний listen, как в эталонном global_metrics.conf проекта-образца - там stub_status слушает на :8080 и пускает только локалку и приватные сети. Для /status принцип тот же, только ставки выше: тут не просто чтение, а запись.
  • Путаешь пути конфигов. После apt install angie конфиги лежат в /etc/angie, а не /etc/nginx. Если переезжаешь - перенеси include-цепочку. Сама структура (nginx.conf -> include http.conf -> globals/* + sites) переносится один в один.
  • Ждёшь от open-source активных проб. Помни границу: пассивные проверки (max_fails) есть и в OSS angie, как в nginx. Полноценные активные пробы по расписанию - это PRO. Не обещай заказчику то, чего нет в бесплатной редакции.
  • Считаешь angie "ещё одним nginx-дистрибутивом". Это самостоятельный форк со своим циклом релизов и своими CVE-нотификациями. Подписывайся на их security-рассылку отдельно, обновляйся отдельно.
Отдельно про совместимость: поскольку angie - drop-in, все привычные паттерны из курса работают. Сквозная трассировка через map и $request_id, structured JSON-логи через log_format escape=json, rate-limit зоны, proxy-кэш с proxy_cache_path - всё это конфигурируется идентично. Angie ничего не ломает, он добавляет. Поэтому переход - низкорисковый: поднял рядом, прогнал трафик в canary, сравнил метрики (которые теперь видно из коробки), переключил.

Мини-лаба: angie с метриками и живым upstream за 10 минут

Повтори руками, лучше в Docker, чтобы ничего не сносить на хосте.
  • Шаг 1. Подними angie в контейнере: docker run -d --name angie -p 8080:80 docker.angie.software/angie:latest (официальный образ). Проверь, что отвечает: curl -s http://127.0.0.1:8080/.
  • Шаг 2. Зайди внутрь: docker exec -it angie sh. Положи конфиг из секции "Практика" в /etc/angie/http.d/, заменив реальные бэкенды на два простых (можно поднять рядом два контейнера с любым echo-сервером на 9000).
  • Шаг 3. Не забудь zone backend 1m; в upstream. Сделай angie -t, затем angie -s reload.
  • Шаг 4. Пусти немного трафика: for i in $(seq 100); do curl -s http://127.0.0.1/api/ >/dev/null; done. Теперь дёрни curl -s http://127.0.0.1/status/http/upstreams/backend/peers/ | jq . и убедись, что счётчики selected.total растут на обоих серверах.
  • Шаг 5. Выведи один сервер через PATCH ({"down": true}), снова пусти трафик и проверь по /status, что на него запросы больше не идут. Верни обратно. Ни одного reload ты не делал.
  • Шаг 6. Открой /p8s и убедись, что отдаётся Prometheus-формат - это готовый scrape-target для Grafana.
Если selected.total не растёт - почти наверняка забыл zone в upstream либо обращаешься не к тому пути. Если API отвечает 403 - проверь allow/deny, ты сам себя закрыл.

Контрольные вопросы
  • 1. Почему директива zone в блоке upstream обязательна для работы статистики и API в angie, и что физически она создаёт?
  • 2. Чем динамическое изменение upstream через PATCH к /config принципиально лучше, чем правка конфига и nginx -s reload под нагрузкой?
  • 3. Какие из перечисленного есть в open-source angie бесплатно, а что только в PRO: /status JSON, Prometheus, Console Light, dynamic upstream API, полноценные активные health-пробы?
  • 4. Чем активные health checks отличаются от пассивных (max_fails), и почему пассивных иногда недостаточно для чистого балансирования?
Итог

Angie - это форк nginx от части его оригинальных авторов, drop-in замена с полной совместимостью конфигов: миграция сводится к установке пакета. Сверх ванильного nginx он бесплатно даёт то, за что в мире nginx платят за Plus или городят зоопарк инструментов: детальный /status в JSON, метрики Prometheus и панель Console Light, динамическое управление upstream без reload, нативный ACME и Zstd, Docker service discovery. Версии 2026 - 1.11.6 (база nginx 1.29.3) и ветка 1.12 (база 1.31.1), релизы поквартально, security-патчи вровень с nginx. Когда выбирать angie: когда нужна наблюдаемость и динамика апстримов из коробки, но не хочется платить за nginx Plus. Платная редакция PRO добивает enterprise-фичи вроде полноценных активных проб. Главное - переход низкорисковый: то, что ты уже знаешь про nginx, работает в angie без изменений.
👍4 ❤️2 🔥 😄 🤔3
Аватара пользователя
tordev
Сообщения: 1
Зарегистрирован: 14 май 2026, 13:43

Re: Angie: современный форк Nginx 2026

Сообщение tordev »

Поставил angie рядом в докере на тесте, реально конфиг от nginx заехал без единой правки. /status с разбивкой по пирам - то что я месяцами выковыривал exporter-ом. Респект.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
gpuenjoyer
Сообщения: 1
Зарегистрирован: 02 июн 2026, 01:47

Re: Angie: современный форк Nginx 2026

Сообщение gpuenjoyer »

А с активными health-пробами я так и не понял: в бесплатной версии их нет совсем или есть, но урезанные? У меня как раз кейс когда max_fails не спасает, бэкенд отвечает 200 но отдаёт мусор.
👍 ❤️1 🔥1 😄 🤔
Ответить
← Предыдущая глава
Практика OpenResty: авторизация, JWT, кэш, Redis
Следующая глава →
Динамическая конфигурация и service discovery

Все главы курса «Nginx профессионально: от первого конфига до API-gateway на OpenResty и Angie»

Поделиться темой: ✈ Telegram VK
Похожие запросы: Angie: форк nginx с нативными метриками

Вернуться в «Nginx профессионально: от первого конфига до API-gateway на OpenResty и Angie»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость