О веб-сервере 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 и Angie PRO.

Преимущества 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, который расширяет их ещё больше.