О проекте#
Angie (Э́нджи) — эффективный, мощный и масштабируемый веб-сервер, реализованный как форк nginx:
Создан бывшими разработчиками исходного проекта, чтобы двигаться в новом направлении, и может служить заменой предшественнику без переработки конфигурации и модулей.
Включает все возможности nginx 1.27.1 и добавляет к ним целый ряд новых функций.
Доступны бинарные пакеты для разных ОС и архитектур, а также Docker-образы. Исходный код проекта открыт в публичных репозиториях под свободной лицензией типа BSD.
Также выпускается коммерческая версия Angie PRO, которая обладает дополнительными возможностями и внесена в реестр российского ПО.
Выбор готовых пакетов Angie, Docker-образы и сборка из исходного кода.
Запуск и управление; конфигурация, модули, директивы и переменные.
Решение технических проблем с Angie, способы обратной связи.
Сведения для разработчиков, желающих принять участие в проекте.
Текущая версия#
Angie 1.7.0 и Angie PRO 1.7.0 были выпущены 19 сентября 2024 г. Новые версии выходят раз в квартал; в промежутках публикуются срочные исправления и важные улучшения.
Функциональность#
Среди основных преимуществ в сравнении с nginx, доступных в открытой бесплатной версии Angie:
Поддержка HTTP/3 как для соединений с клиентами, так и для соединений с проксируемыми серверами, позволяющая независимо использовать разные протоколы (HTTP/1.x, HTTP/2, HTTP/3) на другой стороне.
Автоматическая настройка HTTPS позволяет получать TLS-сертификаты за счет встроенной поддержки ACME.
Упрощение конфигурации: в директиве
location
можно задать сразу несколько строк для сопоставления, объединив блоки с одинаковыми настройками.Получение базовых сведений о веб-сервере, его конфигурации, а также статистики по проксируемым серверам, клиентским соединениям, зонам разделяемой памяти и многим другим вещам через REST-подобный API-интерфейс в формате JSON.
Экспорт статистики в формате Prometheus с настраиваемыми шаблонами.
Визуальная консоль мониторинга Console Light для наблюдения за сервером через браузер. Познакомиться с онлайн-примером: https://console.angie.software/
Возможность автоматически обновлять списки проксируемых серверов, соответствующих доменному имени, и получать эти списки из DNS-записей SRV.
Режим привязки сессий, при котором все запросы в рамках одной сессии будут направляться на один и тот же проксируемый сервер.
Механизм плавного ввода проксируемого сервера в работу после сбоя с помощью опции
slow_start
директивы server.Ограничение скорости отдачи MP4-файлов пропорционально битрейту, снижающее нагрузку на полосу пропускания.
Директива mqtt_preread модуля
stream
, расширяющая возможности авторизации и балансировки для протокола MQTT.Принятие решений при балансировке с учетом сессионных cookie протокола RDP при помощи директивы rdp_preread в
stream
.Готовые бинарные пакеты для множества популярных сторонних модулей.
Коммерческая версия Angie PRO добавляет к общедоступным функциям следующие возможности:
Управление проксируемыми серверами через REST-подобный API-интерфейс динамической конфигурации; визуальную консоль мониторинга Console Light также можно использовать для управления сервером через браузер.
Активная проверка состояния проксируемых серверов путем отправки периодических тестовых запросов.
Балансировка с учетом среднего времени ответа от проксируемых серверов с настраиваемым коэффициентом сглаживания.
Балансировка на основе обратной связи, которая выбирает серверы на основе значения переменной; предполагается, что оно поступает от самих серверов, передающих загрузку процессора или другие метрики.
Очередь ожидания для запросов, настраиваемая с помощью директивы queue в блоке
upstream
.Дополнительный режим привязки sticky learn, позволяющий обнаруживать сессии и запоминать их в разделяемой памяти.
Условная привязка клиентских соединений к соединению с проксируемым сервером, что в том числе дает возможность проксировать NTLM.
Сегментирование кэша в прокси-модуле, которое позволяет в зависимости от свойств ответа размещать его в разных местах.
Имя сервера на страницах ошибок и в поле заголовка
Server
можно скрыть или переопределить с помощью директивы server_tokens.