О веб-сервере Angie#
Angie (Энджи) — эффективный, мощный и масштабируемый веб-сервер, реализованный как форк nginx:
Создан бывшими разработчиками исходного проекта, чтобы двигаться в новом направлении, и может служить заменой предшественнику без переработки конфигурации и модулей.
Включает почти все возможности nginx 1.31.2 и добавляет к ним целый ряд новых функций.
Доступны бинарные пакеты для разных ОС и архитектур, а также Docker-образы. Исходный код проекта открыт в публичных репозиториях под свободной лицензией типа BSD.
Также выпускается коммерческая версия Angie PRO, которая обладает дополнительными возможностями и внесена в реестр российского ПО.
Выбор готовых пакетов Angie, Docker-образы и сборка из исходного кода.
Запуск и управление; конфигурация, модули, директивы и переменные.
Решение технических проблем с Angie, способы обратной связи.
Сведения для разработчиков, желающих принять участие в проекте.
Текущая версия#
Angie 1.12.1 и Angie PRO 1.12.1 были выпущены 17 июля 2026 г. Новые версии выходят раз в квартал; в промежутках публикуются срочные исправления и важные улучшения.
Преимущества Angie над nginx#
Основные преимущества, доступные в открытой бесплатной версии Angie:
Наблюдаемость и мониторинг
Получение базовых сведений о веб-сервере, его конфигурации, а также статистики по проксируемым серверам, клиентским соединениям, зонам разделяемой памяти, TLS-сертификатам и многим другим вещам через REST-подобный API-интерфейс в формате JSON.
Сбор произвольных пользовательских метрик трафика HTTP и stream в реальном времени модулем Metric с настраиваемыми методами агрегации (счетчики, гистограммы, скользящие средние и т. п.); метрики группируются по произвольным ключам и доступны через API статистики.
Экспорт статистики в формате Prometheus с настраиваемыми шаблонами.
Расширенное журналирование ошибок директивой error_log: фильтрация сообщений параметром
filter=, вывод в формате JSON параметромformat=и ограничение частоты записи параметромrate=, а также добавление собственных меток директивой error_log_user_tag.Визуальная консоль мониторинга Console Light для наблюдения за сервером через браузер. Познакомиться с онлайн-примером: https://console.angie.software/
TLS и безопасность
Клиент ACME в составе Angie, включённый в наши пакеты и образы, так что отдельный модуль устанавливать не нужно: автоматический выпуск и обновление TLS-сертификатов с подтверждением домена по HTTP, DNS и TLS-ALPN. Подтверждение по DNS открывает выпуск wildcard-сертификатов, ACME работает и в модуле stream, а нестандартные способы подтверждения подключаются директивой acme_hook.
Поддержка TLS 1.3 Early Data (0-RTT) в модуле
streamс помощью директивы ssl_early_data.Поддержка NTLS на стороне сервера и стороне клиента при использовании библиотеки TongSuo, включаемая на этапе сборки.
Проксирование и балансировка
Динамическое обновление групп проксируемых серверов по событиям и меткам контейнеров Docker (или аналогов, например Podman) без перезагрузки сервера.
Механизм плавного ввода проксируемого сервера в работу после сбоя с помощью опции
slow_startдирективы server как в HTTP-, так и в stream-группах проксируемых серверов.Настраиваемый коэффициент сглаживания балансировки по среднему времени ответа: он определяет, насколько сильно свежие замеры влияют на среднее — от инертного усреднения до быстрой реакции на всплески.
Привязка сессий (sticky) для протоколов модуля
stream(TCP/UDP): все соединения одной сессии направляются на один и тот же проксируемый сервер.Плавный вывод проксируемого сервера из эксплуатации в модуле
streamпараметромdrainдирективы server: сервер перестаёт принимать новые соединения, но продолжает обслуживать уже привязанные к нему сессии.
Протоколы и трафик
HTTP/3 в соединениях с проксируемыми серверами, а не только с клиентами: версия протокола (HTTP/1.x, HTTP/2, HTTP/3) выбирается независимо на каждой стороне.
Встроенный DoH-сервер (DNS over HTTPS, RFC 8484): приём DNS-запросов по HTTP/HTTPS и их проксирование группам DNS-серверов по UDP или TCP.
Директива mqtt_preread модуля
stream, расширяющая возможности авторизации и балансировки для протокола MQTT.Принятие решений при балансировке с учетом сессионных cookie протокола RDP при помощи директивы rdp_preread в
stream.Ограничение скорости отдачи MP4-файлов пропорционально битрейту, снижающее нагрузку на полосу пропускания.
Передача PROXY Protocol v2 проксируемым серверам в модуле
streamс возможностью задавать произвольные значения TLV директивой proxy_protocol_tlv.Конвертация изображений между форматами, в том числе в HEIC и AVIF, с помощью параметра
convertдирективы image_filter.Поддержка методов аутентификации XOAUTH2 и OAUTHBEARER в почтовом прокси-сервере.
Упрощение конфигурации и эксплуатации
Сброс зоны разделяемой памяти на диск в proxy_cache_path: содержимое индекса кэша сохраняется между перезапусками и обновлениями, что устраняет задержку загрузки кэша и позволяет еще быстрее поднять сервер.
Сразу несколько строк для сопоставления в одной директиве
location: блоки с одинаковыми настройками можно объединить.Директива goto модуля перезаписи, выполняющая внутреннее перенаправление на именованный location без изменения URI, взамен обходных решений на основе
try_filesилиerror_page.Автоматическая настройка DNS-резолвера из
/etc/resolv.conf: файл перечитывается при изменениях, что избавляет от необходимости вручную указывать адреса DNS-серверов.Директива time_format, задающая переменную с произвольным форматом времени, поддерживающим спецификаторы в стиле
strftime()и%Lдля миллисекунд.Готовые бинарные пакеты для множества популярных сторонних модулей.
Возможности Angie PRO#
Коммерческая версия Angie PRO добавляет к возможностям открытой версии следующее:
Динамическая конфигурация и управление
Управление проксируемыми серверами через REST-подобный API-интерфейс динамической конфигурации: серверы можно вводить в балансировку и выводить из неё, менять их веса и другие параметры на лету, не перезагружая рабочие процессы. Визуальную консоль мониторинга Console Light также можно использовать для управления сервером через браузер.
Переопределение имени сервера на страницах ошибок и в поле заголовка
Serverпроизвольным значением с помощью директивы server_tokens.
Расширенная балансировка и отказоустойчивость
Балансировка по обратной связи: серверы выбираются по значению переменной; предполагается, что оно поступает от самих серверов, передающих загрузку процессора или другие метрики.
Очередь ожидания для запросов, настраиваемая директивой queue в блоке
upstream: если сервер для запроса не удаётся выбрать с первой попытки, например при всплеске нагрузки, запрос встаёт в очередь, а не отклоняется сразу.Активная проверка состояния проксируемых серверов периодическими тестовыми запросами: сбойный сервер выводится из балансировки до того, как на него попадёт клиентский запрос, а не после.
Директива no_port в блоке
upstreamмодуляstream, снимающая привязку порта к серверам группы: порт задаётся в директиве proxy_pass, поэтому одну группу можно использовать для проксирования на разные порты без дублирования списка серверов.Директива backup_switch в блоке
upstream: резервные серверы могут продолжать обработку запросов даже после того, как основные серверы снова становятся доступными.
Сессии, соединения и кэширование
Условная привязка клиентских соединений к соединению с проксируемым сервером, что в том числе дает возможность проксировать NTLM.
Директива proxy_bind, вычисляющая переменные после каждого выбора проксируемого сервера: исходящий адрес может зависеть от выбранного сервера — например, через переменную $upstream_current_addr.
Режим привязки sticky learn с хранением сессий во внешнем хранилище, что позволяет объединять несколько балансировщиков в кластер.
Сегментирование кэша в прокси-модуле, которое позволяет в зависимости от свойств ответа размещать его на разных дисках.
Если этих возможностей недостаточно, следует обратить внимание на Angie ADC, который расширяет их ещё больше.