О проекте#

Angie — эффективный, мощный и масштабируемый веб-сервер, созданный как форк nginx:

  • Задуман бывшими разработчиками nginx, чтобы значительно расширить функциональность.

  • Предполагает подмену nginx на месте без переработки конфигурации.

Мы собираем бинарные пакеты для разных ОС и архитектур, а также Docker-образы. Исходный код открыт в публичных репозиториях под свободной лицензией типа BSD. Динамические модули nginx совместимы с Angie; мы также собираем ряд таких модулей.

Текущая версия#

Angie 1.3.0, выпущена 19.09.2023.

Также см. полную историю версий.

Функциональность#

Доступны:

В версии 1.3.0:

  • Возможность указывать в директиве location несколько строк для сопоставления, что позволяет объединить несколько блоков location с одинаковыми настройками и, таким образом, упростить конфигурацию за счет уменьшения дублирования.

  • Экспорт различных метрик статистики в формате Prometheus с гибко настраиваемыми шаблонами при помощи новых директив prometheus и prometheus_template.

  • Детальная информация и метрики по группам проксируемых stream-серверов в интерфейсе статистики, предоставляемом директивой api.

  • Опция resolve директивы server в блоке upstream модуля stream, позволяющая отслеживать изменения списка IP-адресов, соответствующего доменному имени, и автоматически обновлять его без перезагрузки конфигурации.

  • Опция service директивы server в блоке upstream модуля stream, позволяющая получать списки адресов из DNS-записей SRV, с базовой поддержкой приоритета.

  • Получение содержимого конфигурационных файлов, с которыми было запущено текущее поколение рабочих процессов, в интерфейсе, предоставляемом директивой api при включении директивы api_config_files.

  • Отображение номера поколения конфигурации в именах процессов, что позволяет с помощью утилиты ps отслеживать успех перезагрузок конфигурации и количество поколений рабочих процессов с предыдущими версиями конфигурации.

В версии 1.2.0:

  • Директива sticky и сопутствующие настройки в блоке upstream HTTP-модуля, позволяющие задать режим привязки сессий, при котором все запросы в рамках сессии будут направляться на один и тот же сервер.

  • Переменная $upstream_sticky_status, принимающая значения NEW, HIT или MISS в зависимости от успеха направления запроса на релевантный проксируемый сервер с включенной привязкой сессий.

  • Поддержка NTLS в HTTP и stream модулях при использовании TLS библиотеки TongSuo, включаемая опцией сборки ‑‑with‑ntls и настраиваемая с помощью соответствующих директив ssl_ntls и proxy_ssl_ntls.

  • В HTTP и stream прокси-модулях теперь можно настраивать несколько сертификатов разного типа (RSA и ECDSA) и соответствующих им ключей, используя директивы proxy_ssl_certificate и proxy_ssl_certificate_key.

  • Вывод версии и сборки в отображаемом имени master процесса, что позволяет с помощью утилиты ps получить эту информацию о работающем экземпляре сервера.

  • Возможность сжатия модулем gzip ответов со статусом «207 Multi-Status». Спасибо DBotThePony.

В версии 1.1.0:

  • Опция resolve директивы server в блоке upstream HTTP-модуля, позволяющая отслеживать изменения списка IP-адресов, соответствующего доменному имени, и автоматически обновлять его без перезагрузки конфигурации.

  • Опция service директивы server в блоке upstream HTTP-модуля, позволяющая получать списки адресов из DNS SRV записей, с базовой поддержкой приоритета.

  • Детальная информация и метрики по группам проксируемых HTTP-серверов в интерфейсе статистики, предоставляемом директивой api.

  • autoindex выводит листинги директорий в естественном порядке.

В версии 1.0.0:

  • Директива api, реализующая HTTP RESTful интерфейс для получения в формате JSON базовой информации о веб-сервере, а также статистики по клиентским соединениям, зонам разделяемой памяти, DNS-запросам, HTTP-запросам, кэшу HTTP-ответов, сессиям модуля stream и зонам модулей limit_conn/limit_req.

  • Директива status_zone в модуле http для указания зоны сбора статистики по запросам в server и location контекстах.

  • Директива status_zone в модуле stream для указания зоны сбора статистики по TCP/UDP сессиям.

  • Параметр status_zone директивы resolver для указания зоны сбора статистики по DNS-запросам.