История версий Angie ADC#

Что нового#

Angie ADC 0.7.2#

Дата выпуска: 30.01.26

Добавления#

История изменений#

Angie ADC 0.7.1#

Дата выпуска: 27.01.26

Добавления#

Исправления#

  • В мастере первоначальной настройки исправлена ошибка, приводившая к невозможности создания бонда.

Angie ADC 0.7.0#

Дата выпуска: 23.01.26

Добавления#

  • Мастер первоначальной настройки Angie ADC:

    • Теперь в мастере можно создавать бонды и VLAN.

  • Консоль Angie ADC:

  • Новые команды CLI:

  • Новые команды API:

  • Пара высокой доступности:

  • Балансировщик нагрузки:

    • Балансировка трафика на основе набора шифров.

    • Произвольно конфигурируемый сбор статистики с помощью нового модуля Metric в HTTP; позволяет, используя различные методы (счетчики, гистограммы, скользящие средние и др.), агрегировать любые данные на разных стадиях обработки запроса в реальном времени с помощью переменных по заданным ключам и отдавать их в секции /status/http/metric_zones/ API статистики (с поддержкой Prometheus), тем самым добавляя встроенный мощный аналитический инструмент для всего HTTP-трафика.

    • Поддержка ALPN-верификации для ACME, задаваемая при помощи значения alpn в качестве параметра challenge директивы acme_client; позволяет запрашивать мультидоменные сертификаты, держа открытым только HTTPS-порт.

    • Информация об ACME-клиентах и процедуре получения сертификата в разделе /status/http/acme_clients/ API статистики (с поддержкой Prometheus).

    • Добавлена поддержка Encrypted Client Hello (ECH) в HTTP и stream SSL-модулях; директива ssl_encrypted_hello_key позволяет задать файл с приватным ключом; переменная $ssl_encrypted_hello содержит информацию об использовании ECH. Спасибо Максиму Дунину (freenginx).

    • Поддержка PROXY-протокола второй версии в stream-модуле в сторону проксируемых серверов с возможностью передачи произвольных значений через TLV-записи с помощью директивы proxy_protocol_tlv, в которой можно указывать строки с переменными.

    • Переменная $upstream_request_method, содержащая метод запроса к проксируемому серверу, который может отличаться от метода запроса клиента при использовании кэширования или директивы proxy_method; позволяет легко избежать распространенной проблемы в конфигурациях, когда на GET-запрос возвращается закэшированный пустой HEAD-ответ, а также избежать кэширования HEAD и GET отдельно.

    • Режим работы sticky, при котором сессии хранятся только на удалённом сервере и всегда запрашиваются с него, теперь доступен также и в stream-модуле; ранее он был доступен только в HTTP.

    • В режиме хранения привязки sticky-сессий во внешнем хранилище теперь обрабатывается тело ответа; это позволяет извлекать данные о сессии из тела ответа на запрос к внешнему хранилищу, а не только из полей заголовка.

    • Теперь HTTP-верификация в ACME может работать без блоков server с директивой listen 80 в конфигурации; при необходимости слушающий порт можно изменить с помощью новой директивы acme_http_port. Если в директиве acme_http_port указан только порт без IP (значение по умолчанию) и есть слушающие на этом порту блоки server, то обработка HTTP-подверждений для заданного порта в ACME работает только на указанных IP-адресах в директивах listen данных блоков; попытки слушать на всех остальных IP не производится; это делает настройку более гибкой и предотвращает возможную проблему при обновлении с предыдущих версий на конфигурациях, где были только блоки server, слушающие на 80 порту и конкретных IP-адресах.

    • Возможность подсчета количества элементов в списках и объектах при экспорте метрик Prometheus; пути, оканчивающиеся косой чертой, теперь возвращают количество элементов в соответствующей коллекции API.

    • Переменная $sent_body, содержащая тело ответа подзапроса или запроса от клиентского модуля.

    • Поддержка методов аутентификации XOAUTH2 и OAUTHBEARER в почтовом прокси-сервере. Спасибо Rob Mueller и Максиму Дунину (freenginx).

    • Параметр route директивы sticky теперь может содержать произвольные строки с любым количеством переменных.

    • В модуле ACME автоматически вычисляется приблизительный размер получаемого сертификата, что устраняет необходимость увеличивать параметр max_cert_size директивы acme_client в случаях выпуска сертификата с очень большим количеством доменов; параметр оставлен для случаев, когда ручная настройка всё же понадобится.

    • Информация о лицензии и ограничениях в API-секции /status/angie/license.

    • Переменная $upstream_cache_key, содержащая используемый ключ кэширования. Спасибо Кириллу Коринскому и Максиму Дунину (freenginx).

    • Вся функциональность nginx 1.29.3, за исключением директив add_header_inherit и add_trailer_inherit, качество проработки которых крайне низкое.

Изменения#

  • Команды CLI:

    • Настройка NTP перенесена из контекста settings в режим настройки configuration.

    • Команды time и timezone перемещены из контекста settings в контекст system.

  • Балансировщик нагрузки:

    • Переменная $http_host в запросах по протоколу HTTP/3 теперь инициализируется из значения псевдозаголовка :authority, если заголовок Host не был передан, что является нормальным для клиентов; до этого отличия в поведении от протоколов младших версий могли создавать проблемы в конфигурациях с использованием переменной $http_host.

    • Если все HTTP-сервера в upstream-группе оказываются недоступны или возвращают ошибку, то теперь всегда возвращается собственная страница ошибки вместо принятой от последнего сервера, когда тот вернул ошибочный статус согласно настройкам директивы proxy_next_upstream (и ей подобных); это позволяет получить консистентное поведение во всех случаях.

    • Параметр REQUEST_METHOD в файлах конфигурации fastcgi.conf, fastcgi_params, uwsgi_params и scgi_params теперь устанавливается через переменную $upstream_request_method, которая принимает значение GET для HEAD-запросов при настройке кэширования; это предотвращает проблему, когда ранее в результате HEAD-запроса могло происходить сохранение пустых ответов, которые затем отдавались на GET-запросы, так как в типичной конфигурации метод запроса не является ключом кэширования.

    • Максимальный размер ответа от ACME-сервера теперь ограничивается директивой acme_max_response_size, а не параметром max_cert_size= директивы acme_client; заданного по умолчанию значения достаточно для большинства случаев, но в случае, если обновление завершается ошибкой [error] too big subrequest response while sending to client, его следует увеличить.

    • Значение по умолчанию директивы variables_hash_max_size в HTTP-модуле увеличено до 2048, чтобы снизить вероятность появления предупреждений о неоптимальном построении хэша из-за добавления множества новых переменных за последние годы: [warn] could not build optimal variables_hash, you should increase either variables_hash_max_size: 1024 or variables_hash_bucket_size: 64; ignoring variables_hash_bucket_size.

Исправления#

  • Балансировщик нагрузки:

    • Исправлено поведение, при котором не работал возврат на предыдущие группы резервных проксируемых серверов по тайм-ауту при заданной директиве backup_switch permanent=timeout.

    • Если все сервера в upstream-группе оказывались недоступны или возвращали ошибку, то ошибочный ответ последнего мог посчитаться успешным несмотря на настройки директивы proxy_next_upstream.

    • Когда путь в директиве try_files был короче, чем префикс в соответствующем блоке location, использование proxy_pass с URI могло приводить к падению рабочего процесса; исправление портировано из nginx 1.29.4.

    • Если в блоке stream не было ссылающихся на ACME-клиент директив acme, то при указании в нём соответствующих переменных $acme_cert_* конфигурация не принималась с ошибкой unknown variable.

    • Если было настроено сохранение индекса кэша в файл, тестирование конфигурации во время работы могло завершаться ошибками типа [alert] mmap() failed (17: File exists) и [alert] munmap() failed (22: Invalid argument).

    • Директива proxy_method игнорировалась при срабатывании директивы proxy_cache_convert_head on.

    • Длительность тайм-аута, задаваемого опцией fail_timeout директивы server блока upstream, была на 1 секунду больше, чем указано.

    • Если ACME-клиент был отключен в конфигурации и не имел ранее полученного сертификата, запрос к API статистики для данного клиента мог привести к падению рабочего процесса.

    • Если в качестве ключа директивы status_zone, заданной на уровне блоков server, использовались переменные $http_host или $cookie_*, то HTTP/3-запросы могли не учитываться в указанной зоне статистики.

    • При указании доменного имени в директиве docker_endpoint подключения к Docker API и обновления групп проксируемых серверов не происходили.

История изменений#

Angie ADC 0.6.0#

Дата выпуска: 17.11.25

Функции#

  • Добавлен мастер первоначальной настройки IP-адресов для Angie ADC без использования cloud-init.

  • Новые команды CLI:

    • Режим настройки configuration: команды commit, end, ip, rollback, set, show, system, unset.

    • Контекст diagnostics: команды arping, tcpdump, ss, diag, traceroute, ssldump, nslookup.

      Команды ping и pingc перемещены в контекст diagnostics.

    • Контекст transfer: команда edit.

    • Контекст main: команда ps (отображение процессов, запущенных в системе).

    • Контекст settings: команды sysctl, time, timezone, ntp, no ntp.

  • GSLB:

    • Поддержка балансировки с учетом IP-адреса клиента (clientip). Теперь можно проверять вхождение IP-адреса клиента в заданную сеть. Подробнее о методах балансировки можно посмотреть здесь.

    • Оптимизация конфигурации GSLB: в файле gslbd.yaml блок servers переименован в members. Блок содержит серверы и группы серверов, определенные для правила.

  • Пара высокой доступности:

Добавления#

  • Консоль Angie ADC:

    • Оптимизация графиков для мониторинга балансировщика нагрузки:

      • Добавлены дополнительные интервалы времени мониторинга (от 30 минут до двух недель).

      • Улучшены детализация и отображение графиков.

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

Исправления#

  • Пара высокой доступности:

    • Исправлено поведение, позволявшее указать для второго узла пары IP-адрес, принадлежащий первому узлу.

  • Консоль Angie ADC:

    • Исправлена ошибка, возникавшая при попытке применить последнюю рабочую версию конфигурации балансировщика, если единственная рабочая конфигурация (текущая) уже применена.

    • Теперь нельзя пометить как нерабочие текущую и самую первую конфигурации балансировщика нагрузки.

    • При настройке RHI в именах апстримов теперь можно использовать точку. Также добавлено предупреждение о том, что приоритет должен быть уникальным в рамках одного префикс-листа.

  • СLI:

    • Теперь загрузка сертификатов возможна через CLI на порту 2222 (поддержаны команды enable и disable контекста cert-config).

  • Балансировщик нагрузки:

    • Если при использовании опции renew_on_load директивы acme_client присутствовал ранее полученный сертификат, то он не загружался, что могло ограничивать работоспособность до окончания обновления сертификата; если сертификат отсутствовал, то попытки получения нового завершались ошибкой [alert] lseek() failed (9: Bad file descriptor).

    • Если ACME-клиент использовался в блоке stream, но не в блоке http, он деактивировался с предупреждением [warn] ACME client .. is defined but not used и не получал сертификата.

    • Если все директивы acme_client содержали параметр enabled=off и соответствующие переменные $acme_cert_* использовались в конфигурации, то Angie не запускался, сообщая об ошибке [emerg] unknown acme_cert_* variable.

    • Если ACME-клиент использовался в блоке stream, который располагался перед блоком http, то Angie не запускался, сообщая об ошибке [emerg] ACME client .. is not defined but referenced.

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

    • Параметр send= директивы upstream_probe в stream-модуле работал некорректно для UDP-проверок при указании пути к файлу: вместо содержимого файла отправлялся сам путь.

    • Если использовалась опция learn директивы sticky, то после перезагрузки конфигурации параметр timeout= мог не работать до тех пор, пока не появлялась хотя бы одна новая сессия.

Безопасность#

  • Обработка специально созданного логина/пароля при использовании метода аутентификации none в SMTP-модуле могла приводить к отправке серверу аутентификации части содержимого памяти рабочего процесса (CVE-2025-53859); исправление портировано из nginx 1.29.1.

Angie ADC 0.5.2#

Дата выпуска: 20.10.25

Улучшения#

  • Оптимизирован алгоритм распределения трафика при ECMP-балансировке.

Исправление уязвимостей#

  • Внутренние компоненты Angie ADC обновлены до последних версий.

Angie ADC 0.5.0#

Дата выпуска: 12.09.25

Функции#

Добавления#

Управление пользователями:

  • Добавлен переключатель для отображения или скрытия списка удаленных пользователей консоли.

Angie ADC 0.4.0#

Дата выпуска: 02.09.25

Изменения#

  • Образы собраны на базе операционной системы РЕД ОС 8.0.2.

Функции#

Добавления#

Исправления#

  • Балансировщик нагрузки:

    • Настройки прокси-модуля в блоке http могли нарушать работу модулей, которые используют блок client для исходящих запросов; проблема появилась в 0.3.4.

    • Включение proxy_ignore_client_abort совместно с модулями, использующими блок client для исходящих запросов, могло приводить к падению рабочих процессов; проблема появилась в 0.3.4.

    • Если в группе проксируемых серверов был ранее сконфигурирован один сервер, то серверы, добавленные через Docker API, могли не участвовать в балансировке.

    • Если единственный сервер в группе проксируемых серверов был добавлен посредством Docker API, то в случае признания его недоступным он мог исключаться из балансировки.

Angie ADC 0.3.4#

Дата выпуска: 28.07.25

Изменения#

  • Балансировщик нагрузки:

    • Директивы, заданные на уровне блока client, теперь могут наследоваться только в явно объявленных внутри него блоках location и не оказывают влияния на настройки других модулей, неявно использующих блок client для исходящих запросов.

Добавления#

  • Балансировщик нагрузки:

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

    • Активные проверки (health probes) теперь могут проверять доступность серверов при помощи ICMP echo запросов. В директиву upstream_probe добавлены новые параметры ping и ping_timeout.

    • Опция backup=prio директивы server блока конфигурирования upstream-сервера позволяет использовать приоритет из SRV-записи в качестве абсолютного значения уровня группы резервных серверов.

    • Автоматическое получение и динамическое обновление групп проксируемых серверов на основе меток Docker-контейнеров (или Podman), настраиваемое с помощью директивы docker_endpoint; это позволяет на указанном Docker API в реальном времени отслеживать запуск и остановку контейнеров и, соответственно, добавлять или удалять их адреса из списка upstream согласно прописанным в них специальным меткам и без перезагрузки конфигурации.

    • Поддержка автоматического получения TLS-сертификатов по протоколу ACME в stream-модуле, настраиваемое с использованием директивы acme и переменных вида $acme_cert_* и $acme_cert_key_*.

    • Привязка stream-сессий для группы проксируемых серверов с HTTP-запросом во внешнее хранилище, настраиваемое директивой sticky в режиме learn с помощью параметров remote_action, remote_result и remote_uri; это позволяет привязывать клиентские сессии к балансируемым серверам в кластерном режиме, когда группа балансировщиков объединяется общим хранилищем и направляет запросы клиента в рамках одной сессии на один и тот же сервер вне зависимости от того, на какой балансировщик они попали.

    • Новый параметр norefresh директивы sticky (в режиме learn), позволяющий отключать автоматическое продление жизни сессий при их использовании.

    • Новый режим работы sticky с сессиями, при котором сессии хранятся только на удаленном сервере и всегда запрашиваются с него; кэширование ответов удаленного сервера при этом может быть гибко настроено в модуле проксирования.

    • Возможность группе резервных (backup) проксируемых stream-серверов оставаться активной в случае, когда серверы из основной группы стали вновь доступны, использующая директиву backup_switch permanent[=timeout] в блоке upstream.

    • Поддержка приема соединений по протоколу MPTCP, включаемая с помощью опции multipath директивы listen. Спасибо Максиму Дунину (freenginx), Максиму Дурову и Энтони Дорену.

    • Блок client, позволяющий задавать дополнительную конфигурацию для внутренних HTTP-запросов, исходящих от различных модулей.

    • Вся функциональность nginx 1.27.5, включая контроль перегрузки CUBIC в соединениях QUIC.

Исправления#

  • Балансировщик нагрузки:

    • У проксируемых серверов в режиме drain не останавливался отсчет времени неработоспособности в API статистики после того, как проксируемый сервер снова становился доступным по результатам пассивных проверок.

    • Обращение к специальным переменным $stream_* вне контекста обработки запроса sticky-сессии модуля stream приводило к падению рабочего процесса.

    • HTTP/3-согласование с проксируемым сервером могло завершаться ошибкой при использовании библиотеки OpenSSL версии 3.5.0 или выше, если на сервере был активен режим retry QUIC-протокола.

  • Route Health Injection:

    • Исправлено поведение, при котором в RHI была возможность добавлять только один префикс-лист для одного апстрима.

Пакеты#

  • В образ включен пакет qemu-guest-agent версии 9.0.0 для систем виртуализации KVM (QEMU).

Angie ADC 0.3.3#

Дата выпуска: 24.06.25

Добавления#

  • Балансировщик нагрузки: возможность задать в директиве acme_dns_port не только номер порта, но и IP-адрес; поддерживаются IPv4 и IPv6.

Исправления#

  • Балансировщик нагрузки:

    • Одновременное наличие в директивах server_name wildcard-домена и совпадающих с ним доменов третьего уровня приводило к ошибке ACME-сервера при выпуске сертификата для этих доменов в рамках одного ACME-клиента.

    • В stream-модуле после успешного соединения с проксируемым сервером во время пассивной проверки его статус в API статистики ошибочно продолжал отображаться как unavailable до завершения сессии.

    • В stream-модуле отсчет времени неработоспособности в API статистики мог остановиться или ошибочно сброситься, если проксируемый сервер находился в состоянии unhealthy.

    • Запросы HTTP/3 могли зависать и завершаться по таймауту; исправление портировано из nginx 1.29.0.

    • Ранняя ошибка при установлении соединения HTTP/3 с проксируемым сервером могла приводить к падению рабочего процесса.

    • При проксировании по протоколу HTTP/3 число активных соединений могло отображаться в статистике некорректно.

    • Когда проксируемый сервер в режиме drain оказывался недоступен, попытка соединиться с другим сервером согласно настройкам proxy_next_upstream и аналогичным директивам могла не выполняться.

Пакеты#

  • Обновлены базовые пакеты РЕД ОС 7.3.

  • В образ включен пакет open-vm-tools версии 12.4.0.

Angie ADC 0.3.2#

Дата выпуска: 02.06.25

Функции#

Добавления#

  • Балансировщик нагрузки:

    • Возможность задать файл в директиве proxy_cache_path, в который между запусками сервера будет сохраняться содержимое зоны разделяемой памяти с индексом кэша; что избавляет от необходимости подгружать кэш после перезагрузки и позволяет практически сразу вернуть сервер в работу.

    • Поддержка нескольких групп резервных проксируемых серверов, с указанием уровня группы резервирования сервера директивой backup=level в блоках stream и http.

    • Возможность группе резервных (backup) проксируемых HTTP-серверов оставаться активной в случае, когда серверы из основной группы стали вновь доступны, использующая директиву backup_switch permanent[=timeout] в блоке upstream.

    • Поддержка механизма TLS 1.3 Early Data (0-RTT) в stream-модуле с помощью директивы s_ssl_early_data.

    • Новый статус busy у проксируемых серверов в API статистики, означающий, что число запросов на сервер достигло ограничения, заданного опцией max_conns.

    • Параметр uri= в директиве acme_hook, который позволяет переопределять строку запроса к внешнему приложению, в том числе, используя переменные.

    • Параметр renew_on_load директивы acme_client, позволяющий форсировать обновление сертификата при загрузке конфигурации.

    • Отображение даты и времени сборки в поле build_time объекта /status/angie API статистики, а также в выводе ключа командной строки -V.

    • Вся функциональность nginx 1.27.4, за исключением директивы keepalive_min_timeout (аналогичный функционал уже существовал).

  • Поддержка сценария ручной настройки пула SNAT (SNAT Pool).

  • Режим отказоустойчивости Active-Active по протоколу BGP.

  • Добавлена статья по настройке проверок работоспосбности апстримов балансировщика.

  • Дополнительные функции при работе с резервными копиями конфигурации балансировщика нагрузки в консоли Angie ADC:

    • Можно вернуть рабочий статус конфигурации, которая ранее была помечена как нерабочая.

    • Теперь нельзя пометить первую конфигурацию балансировщика как нерабочую.

  • В консоль Angie ADC добавлена информация о решении и используемой версии (закладка "Об Angie ADC").

  • В справку командной строки (CLI) добавлено разбиение по функциям для более удобного поиска информации.

Изменения#

  • Параметр enabled=off в директиве acme_client теперь отключает только обновление сертификата для данного клиента, но сохраняет весь остальной функционал; так, остается возможность использовать ключ и сертификат (при наличии) через переменные $acme_cert_*, а использование переменных $acme_hook_* и директив acme не приводит к ошибкам.

  • Ошибка no valid domain name defined for ACME client теперь возникает только если на ACME-клиент есть ссылка из директивы acme в блоке server, но ни один из доменов этого сервера не соответствует требованиям ACME.

Исправления#

  • При сборке с поддержкой NTLS наследование директив proxy_ssl_certificate и proxy_ssl_certificate_key с переменными работало некорректно.

  • Cтатистика status_zone в блоке server HTTP-модуля могла считаться некорректно, если запросы попадали в разные зоны статистики в рамках одного соединения или на раннем этапе обработки запроса происходила ошибка; проблема появилась в 0.2.0.

Angie ADC 0.2.1#

Дата выпуска: 14.04.2025.

Исправления#

  • Исправлена ошибка в конфигурации adc-cli для виртуального устройства (VA) Angie ADC, приводившая к получению 404 при загрузке сертификата.

Angie ADC 0.2.0#

Дата выпуска: 25.03.2025.

Функции#

Добавления#

  • Балансировщик нагрузки:

    • Привязка HTTP-сессий для группы проксируемых серверов с запросом во внешнее хранилище, настраиваемое директивой sticky в режиме learn с помощью параметров remote_action и remote_result. Это позволяет конфигурировать привязку клиентских сессий к балансируемым серверам в кластерном режиме, когда группа балансировщиков объединяется общим хранилищем и направляет запросы клиента в рамках одной сессии на один и тот же сервер вне зависимости от того, на какой балансировщик они попали.

    • Поддержка валидации DNS-01 посредством ответа на DNS-запрос от ACME-сервера, что позволяет автоматически запрашивать сертификаты любых типов, в том числе wildcard.

    • Система внешних вызовов в модуле ACME, настраиваемая с помощью директивы acme_hook, которая позволяет обеспечить валидацию доменных имен посредством внешнего обработчика для интеграции с различными сервисами и провайдерами DNS-хостинга.

    • ACME-модуль выводит в лог дополнительную информацию: точная причина обновления сертификата, полный список доменов, идентификатор аккаунта пользователя, длительные периоды неактивности (например, во время опросов), какой домен выполняет валидацию. Такая информация позволяет легче диагностировать проблемы на этапе перевыпуска сертификатов, а также прописывать DNS-запись CAA.

    • Параметр account_key в директиве acme_client, позволяющий переиспользовать существующий ключ аккаунта ACME-сервера, а не генерировать новый автоматически.

    • Поддержка переменных в директиве status_zone в модулях HTTP и stream позволяет динамически распределять статистику по нескольким зонам в рамках одного блока location или server. Это, в частности, пригодится для случая, когда один блок server обрабатывает несколько виртуальных хостов.

    • Совместимость HTTP-модуля сжатия GZip с версиями библиотеки zlib-ng 2.2.0 и выше, которые ранее могли приводить к появлению в логе ошибок вида [alert] gzip filter failed to use preallocated memory.

    • Директива max_headers, ограничивающая максимальное количество полей заголовка в HTTP-запросе для лучшей защиты от DoS-атак. Спасибо Максиму Дунину (freenginx) и Максиму Евменкину.

    • Директивы http3_max_table_capacity и proxy_http3_max_table_capacity для настройки ограничения на размер динамической таблицы сжатия заголовка в HTTP/3.

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

    • Вся функциональность nginx 1.27.3.

  • Веб-консоль Angie ADC:

    • возможность поменять логин и пароль;

    • просмотр уже введенного пароля;

    • удаление пользователей консоли.

  • Добавлена команда reload в Angie ADC CLI для балансировщика нагрузки и сборщика метрик Prometheus.

  • Добавлена конечная точка для сбора информации о состоянии системы (загрузка CPU, память, диск, состояние апстримов балансировщика нагрузки и т.д.).

  • Добавлена настройка для изменения host и port для /metrics.

  • В справку добавлены сценарии по настройке Angie ADC:

Изменения#

  • Балансировщик нагрузки:

    • При плавном завершении старых рабочих процессов keepalive-соединения теперь закрываются только после истечения таймаута, заданного директивой lingering_timeout. Такое поведение позволяет предотвратить возможные ошибки на клиенте при получении ответа в этот момент. Спасибо Максиму Дунину (freenginx).

    • Отключено кэширование значений переменных stream-модуля v_ssl_server_name, v_ssl_server_cert_type, v_ssl_preread_protocol и v_ssl_preread_server_name, что позволит получить актуальные значения при использовании виртуальных серверов.

Безопасность#

  • Недостаточная проверка в обработке виртуальных серверов при использовании SNI в TLSv1.3 позволяла повторно использовать SSL-сессию в контексте другого виртуального сервера, обходя проверку клиентских SSL-сертификатов (CVE-2025-23419); исправление портировано из nginx 1.27.4.

Исправления#

  • Модуль GSLB теперь автоматически перезапускается после изменения конфигурации.

  • Балансировщик нагрузки:

    • HTTP/3-клиенты могли отключаться по таймауту при использовании 0-RTT. Проблема была унаследована из nginx в версии 0.1.0.

    • Проксирование по HTTP/3 с использованием переменных в директиве proxy_pass и без указания блока upstream могло приводить к падению рабочего процесса.

    • Кэширование HTTP/3-ответов при использовании динамической таблицы сжатия заголовка могло привести к падению рабочего процесса.

    • Некоторые SSL-рукопожатия могли не учитываться в счетчиках статистики для stream-модуля.

    • Настройки HTTP/3-проксирования, указанные на уровне http или server, могли игнорироваться.

    • При проксировании по протоколу HTTP/3 с включенной поддержкой NTLS директива proxy_ssl_certificate не работала.

    • Использование директивы status_zone в блоке server HTTP-модуля приводило к избыточному логированию пустых запросов в access_log во время TLS-согласований.

    • Ошибки декодирования потока HTTP/3 могли приводить к падению рабочего процесса при закрытии QUIC-соединения; исправление портировано из nginx 1.27.4.

    • Отправка пакетов с согласованием версии протокола QUIC могла привести к бесконечному циклу обмена пакетами; исправление портировано из nginx 1.27.4.

    • Использование DNS-валидации без хуков в ACME-модуле на некоторых конфигурациях могло привести к падению рабочего процесса.

    • Активные проверки, заданные директивой upstream_probe в stream-модуле, могли приводить к падению рабочего процесса.

    • Запросы к API для получения значений статистики из отдельной зоны, которая была задана через переменные, могли приводить к зацикливанию рабочего процесса.

    • HTTP/3-запросы не учитывались в зонах статистики.

    • TLS-согласования по протоколу QUIC не учитывались в статистике по SSL.

    • Использование доменных имен, начинающихся с точки, в директиве server_name, могло привести к ошибке обновления сертификата по протоколу ACME.

  • Исправление уязвимостей.

Angie ADC 0.1.0#

Дата выпуска: 07.09.2024.

Регистрация в Реестре ПО: номер 24972 от 27.11.2024.

Функции#

  • Балансировщик нагрузки:

    • Полная функциональность на основе Angie PRO 1.7.0.

    • Дополнительные функции:

      • Балансировка с учетом полосы пропускания до или от проксируемых серверов, с настраиваемым коэффициентом сглаживания, использующая директиву least_bandwidth в блоках upstream и http.

      • Балансировка с учетом полосы пропускания, расчитываемой по количеству пакетов в единицу времени, до или от проксируемых stream-серверов, использующая директиву least_packets в блоке upstream.

  • Модуль GSLB.

  • Веб-консоль Angie ADC:

    • просмотр статистики балансировщика нагрузки;

    • управление пользователями.