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

2024#

Angie PRO 1.7.0#

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

Добавления#

  • Принудительное закрытие соединений к проксируемому серверу при удалении его из группы; настраивается с помощью директив proxy_connection_drop, grpc_connection_drop, fastcgi_connection_drop, scgi_connection_drop и uwsgi_connection_drop, значения которых возможно индивидуально переопределить аргументом connection_drop API-запроса на удаление сервера.

  • Счетчики отдельных типов отправленных DNS-запросов в API статистики резолвера, собираемой параметром status_zone директивы resolver.

  • Режим балансировки feedback (PRO) теперь может быть использован и в рамках stream-модуля; он распределяет TCP/UDP сессии с учётом значения указанной переменной, которое может быть получено от проксируемых серверов или периодического опроса внешних сервисов, что позволяет, в частности, динамически перераспределять нагрузку в зависимости от произвольных метрик проксируемого сервера: расхода различных ресурсов, загруженности CPU/памяти, длины очереди и т.п.

  • Опция last_byte директивы feedback (PRO), позволяющая анализировать ответ от проксируемых серверов не после получения заголовка, а после получения ответа целиком.

  • Метод балансировки feedback (PRO) в качестве значения переменной теперь поддерживает числа с плавающей запятой.

  • Параметр account директивы least_time (PRO), позволяющий гибко указывать с помощью переменной, время ответа на какие запросы должно учитываться в режиме балансировки least_time; в том числе дает возможность учитывать время ответа только на определенные тестовые запросы механизма upstream_probe (PRO).

  • Параметр factor директивы least_time (PRO), задающий коэффициент сглаживания для балансировщика least_time и переопределяющий значение директивы response_time_factor (PRO), которая используется для сбора статистики.

  • Режим drain, переводящий проксируемый stream-сервер в новое состояние draining, при котором на сервер направляются только запросы, привязанные с помощью модуля sticky.

  • Переменная $ssl_server_cert_type, содержащая тип выбранного сертификата при приеме TLS-соединения.

  • Отключение создания PID-файла с помощью параметра off в директиве pid, что может быть полезным для неизменяемых образов и при непосредственном управлении менеджером процессов. Спасибо Максиму Дунину (freenginx).

  • Создание PID-файла теперь выполняется атомарно через промежуточный временный файл, что исключает момент, когда файл уже появился в директории, но еще пуст, и позволяет внешним программам проще и надежнее с ним работать.

  • Теперь при переконфигурации не делается попытка пересоздать PID-файл, если имя в директиве pid изменилось, но указывает на тот же файл через симлинки, что, в частности, позволяет избежать проблем в системах во время миграции с /var/run/angie.pid на /run/angie.pid. Спасибо Максиму Дунину (freenginx).

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

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

  • Опция --feature-cache скрипта ./configure для кэширования результатов его работы с целью оптимизации массовой сборки модулей или кросс-компиляции.

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

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

  • наступление таймаута ожидания в очереди, заданной директивой queue (PRO), могло приводить к падению рабочего процесса.

  • При запуске под systemd могли возникать ошибки PID file ... not readable (yet?) after start и Failed to parse PID from file.... Спасибо Максиму Дунину (freenginx).

Изменения#

  • Обновлены текстовые описания кодов HTTP-ответов в соответствии с RFC 9110. Спасибо Максиму Дунину (freenginx) и Michiel W. Beijen.

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

  • Запрещены имена полей заголовка HTTP/1.x без двоеточия на конце; такие некорректные заголовки от клиента или проксируемого сервера теперь будут приводить к возврату ошибки. Спасибо Максиму Дунину (freenginx) и Максиму Евменкину.

  • При чтении тела запроса с использованием HTTP/1.1 "chunked transfer encoding" суммарный размер игнорируемых "chunk extensions" и полей "trailer header" теперь ограничен директивой client_max_body_size для улучшения защиты против DoS-атак. Спасибо Максиму Дунину (freenginx) и Bartek Nowotarski.

  • MIME-тип в файле конфигурации mime.types для расширения :bmp: изменён на image/bmp, для расширения rar u2014 на application/vnd.rar, а для расширений deb и udeb теперь указан application/vnd.debian.binary-package. Спасибо Юрию Изоркину.

Пакеты#


Angie PRO 1.6.2#

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

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

  • Обработка специально созданного MP4-файла модулем ngx_http_mp4_module могла приводить к падению рабочего процесса (CVE-2024-7347); исправление портировано из nginx 1.27.1.


Angie PRO 1.6.1#

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

Добавления#

  • Счетчик passed в зоне API статистики, задаваемой директивой status_zone модуля stream, для подсчета соединений, переданных на обработку в другие слушающие сокеты при помощи директив pass.

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

  • При использовании виртуальных серверов или директивы pass в модуле stream соединения могли учитываться некорректно в API статистики.

  • На конфигурациях с 5 ACME-клиентами и более могли происходить падения рабочих процессов; проблема появилась в 1.6.0.

  • Обработка закэшированных ответов с заголовком X-Accel-Redirect могла приводить к падению рабочего процесса. Спасибо Максиму Дунину (freenginx) и Иржи Сетничке.

Пакеты#


Angie PRO 1.6.0#

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

Добавления#

  • Балансировка HTTP-запросов с учетом значения указанной переменной, которое может быть получено от проксируемых серверов или периодического опроса внешних сервисов, настраиваемая с помощью директивы feedback в блоке upstream; что позволяет, в частности, динамически перераспределять нагрузку в зависимости от произвольных метрик проксируемого сервера: расхода различных ресурсов, загруженности CPU/памяти, длинны очереди и т.п.

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

  • Извлечение значений Cookie из RDP-соединений с помощью директивы rdp_preread stream-модуля в переменные $rdp_cookie и $rdp_cookie_NAME, что позволяет логировать и привязывать RDP-сеансы клиентов к одним и тем же серверам при балансировке нагрузки.

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

  • Возможность указать несколько директив acme в одном блоке server, что позволяет настраивать получение сертификатов сразу двух типов в рамках данного виртуального сервера.

  • Ключи командной строки -m и -M для отображения списка встроенных и загруженных модулей.

  • Переменная $upstream_probe, которая содержит имя текущей активной проверки, порожденной upstream_probe.

  • Поддержка BoringSSL в модуле ACME.

  • Вся функциональность nginx 1.27.0, включая поддержку виртуальных серверов в модуле stream и директиву pass, позволяющую передавать принятые соединения на обработку в другие слушающие сокеты, в том числе модулей HTTP и Mail.

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

  • Активные проверки upstream_probe могли не работать на некоторых конфигурациях, логируя при этом ошибки вида [alert] getsockname() failed (9: Bad file descriptor).

  • Запрос сертификата по протоколу ACME мог завершаться ошибкой в некоторых конфигурациях с сообщением в логе вида [alert] getsockname() failed (9: Bad file descriptor).

  • Запрос сертификата с большим количеством доменных имен по протоколу ACME мог завершаться ошибкой с сообщением в логе вида [error] JSON parser error.

  • ACME-клиенты в конфигурациях с несколькими директивами error_log могли выводить сообщения в несоответствующие логи.

Пакеты#


Angie PRO 1.5.2#

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

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

  • При использовании HTTP/3 обработка специально созданной QUIC-сессии могла приводить к падению рабочего процесса, отправке клиенту содержимого памяти рабочего процесса на системах с MTU больше 4096 байт и иметь другие последствия (CVE-2024-32760, CVE-2024-31079, CVE-2024-35200, CVE-2024-34161); исправление портировано из nginx 1.26.1.

Пакеты#


Angie PRO 1.5.1#

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

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

  • Механизм proxy_next_upstream работал некорректно при редактировании группы проксируемых серверов через API, а также при использовании опции resolve директивы server в блоке upstream, если количество полученных IP-адресов отличалось от числа заданных серверов.

  • При запросе сертификата по протоколу ACME могла произойти ошибка сегментации в рабочем процессе.

  • Директива sticky в режиме learn могла работать некорректно с различающимся количеством переменных lookup и create.

  • Механизм slow_start не срабатывал при проксировании TCP-соединений в модуле stream.

  • Запросы HTTP/3 могли завершаться с ошибкой, если они были присланы как TLS 1.3 early data; проблема появилась в 1.4.0.

  • HTTP/3-соединение могло закрываться преждевременно при использовании 0-RTT в QUIC.

  • При чтении тела запроса из быстрого соединения было возможно чтение в течение долгого времени. Спасибо Максиму Дунину (freenginx).

Изменения#

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

Пакеты#

27.05.2024

  • Пакеты для операционной системы Alpine 3.20.


Angie PRO 1.5.0#

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

Добавления#

  • Начальная поддержка автоматического получения и обновления сертификатов по протоколу ACME, конфигурируемая с помощью директив acme_client и acme, а также переменных вида $acme_cert_= и $acme_cert_key_=.

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

  • Настройка автоматического перенаправления для добавления слеша в конец URI запроса с помощью директивы auto_redirect.

  • Вывод содержащих даты метрик в формате временных меток Unix вместо ISO 8601 для использования в Prometheus, а также в JSON API при запросе с аргументом ?date-epoch.

  • Теперь ключ -V показывает также релевантную версию nginx, что полезно для совместимости со сторонними утилитами, в частности certbot. Спасибо AdvTechnoKing.

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

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

  • Если был задействован механизм переиспользования SSL-сессий (proxy_ssl_session_reuse), то при динамическом обновлении списка проксируемых серверов могла происходить утечка из зоны разделяемой памяти (zone), настроенной для соответствующего блока upstream.

Пакеты#

28.03.2024

16.04.2024

25.04.2024


Angie PRO 1.4.1#

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

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

  • При использовании HTTP/3 в рабочем процессе во время обработки специально созданной QUIC-сессии могла произойти ошибка сегментации (CVE-2024-24989); при этом Angie, начиная еще с версии 1.4.0, не подвержен уязвимости CVE-2024-24990.

Пакеты#

2023#

Angie PRO 1.4.0#

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

Добавления#

  • Поддержка HTTP/3-соединений с upstream-серверами в прокси-модуле HTTP, допускающая использование клиентами произвольных версий HTTP. Конфигурация осуществляется с помощью директивы proxy_http_version и набора директив proxy_quic_ и proxy_http3_.

  • Директива upstream_probe (PRO) для активной проверки состояния серверов в блоке upstream stream-модуля путем периодического создания тестовых соединений или отправки датаграмм.

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

  • Очередь ожидания для запросов, для которых не удалось выбрать проксируемый сервер с первой попытки, настраиваемая с помощью директивы queue (PRO) в блоке upstream HTTP-модуля.

  • HTTP RESTful JSON-интерфейс для изменения конфигурации, добавления и удаления проксируемых серверов в блоках upstream stream-модуля, а также директива state для долговременного сохранения этих изменений.

  • Балансировка с учетом среднего времени установки соединения, получения первого или последнего байта ответа от проксируемых stream-серверов с настраиваемым коэффициентом сглаживания, использующая директивы least_time (PRO) и response_time_factor (PRO) в блоке upstream.

  • Статистика по среднему времени установки соединения, получения первого и последнего байта ответа от проксируемых stream-серверов в интерфейсе, предоставляемом директивой api, с возможностью настройки коэффициента сглаживания директивой response_time_factor (PRO) блока upstream.

  • Механизм плавного ввода проксируемого сервера в работу после сбоя с помощью опции slow_start директивы server в блоке upstream.

  • Директива mqtt_preread модуля stream, позволяющая помещать имя пользователя и идентификатор клиента из пакета CONNECT протокола MQTT в переменные $mqtt_preread_username и $mqtt_preread_clientid.

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

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

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

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

Изменения#

  • Теперь время, в течение которого проксируемый сервер находился в состоянии checking, не учитывается в downtime.

  • В стандартный шаблон prometheus_all.conf добавлены все дополнительные метрики Prometheus и возможные значения state у серверов upstream, присутствующие только в версии PRO.

Пакеты#

25.12.2023

22.01.2024


Angie PRO 1.3.2#

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

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

  • Активные проверки с флагом essential при обнаружении изначальной проблемы некорректно обрабатывали смену состояния проксируемого сервера с checking на unhealthy, из-за чего пользовательские запросы могли направляться на неработоспособный сервер.

  • Были возможны некорректные значения метрик в формате Prometheus, в значениях которых использовались отличные от $p8s_value переменные; на практике проблема могла наблюдаться с angie_http_upstreams_peers_state и angie_stream_upstreams_peers_state из стандартного шаблона prometheus_all.conf.

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

Пакеты#

04.12.2023

07.12.2023

12.12.2023


Angie PRO 1.3.1#

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

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

  • Добавлены дополнительные ограничения при обработке потоков HTTP/2, чтобы лучше противостоять DoS-атаке "HTTP/2 Rapid Reset" (CVE-2023-44487).

Пакеты#

26.10.2023

13.11.2023


Angie PRO 1.3.0#

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

Добавления#

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

  • Балансировка с учетом среднего времени получения заголовка ответа или полного ответа от проксируемых HTTP-серверов с настраиваемым коэффициентом сглаживания, использующая директивы least_time (PRO) и response_time_factor (PRO) в блоке upstream.

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

  • Статистика по среднему времени получения заголовка ответа и полного ответа от проксируемых HTTP-серверов в интерфейсе, предоставляемом директивой api, с возможностью настройки коэффициента сглаживания директивой response_time_factor (PRO) блока upstream.

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

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

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

  • Возможность привязки клиентских соединений к соединению с проксируемым сервером с помощью директивы bind_conn (PRO) в блоках upstream HTTP-модуля, позволяющая, в частности, успешно проксировать соединения с проверкой подлинности NT LAN Manager (NTLM).

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

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

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

Изменения#

  • Теперь при загрузке конфигурации OpenSSL используется appname angie.

Пакеты#


Angie PRO 1.2.0#

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

Добавления#

  • HTTP RESTful JSON интерфейс для изменения конфигурации, добавления и удаления проксируемых серверов в блоках upstream HTTP-модуля, а также директива state для долговременного сохранения этих изменений.

  • Директива upstream_probe (PRO) для активной проверки состояния серверов в блоке upstream HTTP-модуля путем отправки периодических тестовых запросов.

  • Поддержка сегментирования кэша в модуле HTTP proxy, которая позволяет в зависимости от произвольного параметра ответа кэшировать его на разных директориях (дисках), задаваемых дополнительным параметром path- директивы proxy_cache с использованием переменных.

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

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

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

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

  • Вся функциональность nginx 1.25.0, включая поддержку HTTP/3.

Изменения#

Пакеты#


Angie PRO 1.1.0-p1#

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

Добавления#

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

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


Angie PRO 1.1.0#

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

Добавления#

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

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

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

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

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

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

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

  • Произвольная настройка подписи на стандартных страницах ошибок и поля Server в заголовке ответа с помощью директивы server_tokens.

  • Переменная $angie_version, содержащая версию Angie.

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

Пакеты#

07.04.2023

  • Пакеты для операционной системы ALT Linux.

12.05.2023

26.05.2023

  • Пакеты для операционной системы Astra Linux Special Edition.

13.06.2023

12.07.2023

31.07.2023