История версий 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-module-opentracing — до версии 0.36.0
angie-pro-module-lua — до версии 0.10.27
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-console-light — до версии 1.4.0
angie-pro-module-opentracing — до версии 0.35.3
angie-pro-module-zstd — до ревизии
f4ba115
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.
Вся функциональность 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-module-auth-jwt — до версии 0.7.0
angie-pro-module-auth-ldap — до ревизии
241200e
angie-pro-module-jwt — до версии 3.4.1
angie-pro-module-keyval — до версии 0.3.0
angie-pro-module-lua:
stream_lua_module
— до ревизииbea8a0c
angie-pro-module-njs — до версии 0.8.5
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-module-opentracing — до версии 0.35.2
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
.
Пакеты#
Пакеты для операционных систем FreeBSD 13 (arm64), RED OS 8 (x86-64).
-
Добавлены динамические модули:
-
Обновлены:
angie-pro-module-opentracing — до версии 0.34.0
28.03.2024
-
Обновлены:
angie-pro-console-light — до версии 1.3.0
16.04.2024
-
Добавлены динамические модули:
-
Обновлены:
angie-pro-module-njs — до версии 0.8.4
25.04.2024
-
Добавлены динамические модули:
angie-pro-module-vts: включает module-vts, module-sts, module-stream-sts
Angie PRO 1.4.1#
Дата выпуска: 15.02.2024.
Безопасность#
При использовании HTTP/3 в рабочем процессе во время обработки специально созданной QUIC-сессии могла произойти ошибка сегментации (CVE-2024-24989); при этом Angie, начиная еще с версии 1.4.0, не подвержен уязвимости CVE-2024-24990.
Пакеты#
-
Добавлены динамические модули:
-
Обновлены:
angie-pro-module-njs — до версии 0.8.3
angie-pro-module-vod — до версии 1.33
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.
Пакеты#
Пакеты для операционной системы Alpine 3.19.
-
Обновлены:
angie-pro-console-light — до версии 1.2.0
angie-pro-module-auth-jwt — до версии 0.4.0
angie-pro-module-headers-more — до версии 0.36
angie-pro-module-ndk — до версии 0.3.3
angie-pro-module-opentracing — до версии 0.33.0
25.12.2023
-
Обновлены:
angie-pro-console-light — до версии 1.2.1
22.01.2024
-
Добавлены динамические модули:
-
Обновлены:
angie-pro-module-auth-jwt — до версии 0.6.0
angie-pro-module-headers-more — до версии 0.37
angie-pro-module-lua:
http_lua_module
— до версии 0.10.26;stream_lua_module
— до версии 0.0.14
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
-
Обновлены:
angie-pro-console-light — до версии 1.1.1
12.12.2023
-
Добавлены динамические модули:
-
Обновлены:
angie-pro-module-auth-jwt — до версии 0.4.0
angie-pro-module-headers-more — до версии 0.36
angie-pro-module-ndk — до версии 0.3.3
angie-pro-module-opentracing — до версии 0.33.0
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-console-light — до версии 1.1.0
angie-pro-module-headers-more — до версии 0.35
angie-pro-module-njs — до версии 0.8.2
angie-pro-module-vod — до версии 1.32
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-module-njs — до версии 0.8.1
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.
Изменения#
Значения переменной $upstream_sticky_status теперь в верхнем регистре, чтобы быть в одном стиле со значениями $upstream_cache_status.
Пакеты#
-
Добавлены динамические модули:
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
Пакеты для операционной системы FreeBSD.
-
Добавлены динамические модули:
26.05.2023
Пакеты для операционной системы Astra Linux Special Edition.
13.06.2023
Пакеты для операционных систем Debian 12 "Bookworm" и AlmaLinux.
12.07.2023
-
Добавлены динамические модули:
-
Обновлены:
angie-pro-module-njs — до версии 0.8.0
31.07.2023
-
Добавлены динамические модули: