Выпуск Angie 1.6.0, российского форка Nginx

Опубликован выпуск высокопроизводительного HTTP-сервера и многопротокольного прокси-сервера Angie 1.6.0, ответвлённого от Nginx группой бывших разработчиков проекта, уволившихся из компании F5 Network. Исходные тексты Angie доступны под лицензией BSD. Проект получил сертификаты совместимости с российскими операционными системами Ред ОС, Astra Linux Special Edition, Роса Хром Сервер, Альт и ФСТЭК-версии Альт.

Сопровождением разработки занимается компания “Веб-сервер”, образованная осенью 2022 года и получившая инвестиции в размере 1 млн долларов. Среди совладельцев компании Веб-сервер: Валентин Бартенев (лидер команды, развивавшей продукт Nginx Unit), Иван Полуянов (бывший руководитель фронтэнд-разработчиков Rambler и Mail.Ru), Олег Мамонтов (руководитель команды техподдержки NGINX Inc) и Руслан Ермилов ([email protected]).

Изменения в Angie 1.6.0:

  • В модуль stream добавлена директива “sticky“, которую можно использовать в блоке upstream для привязки всех соединений в сеансе к одному серверу при балансировке TCP- и UDP-потоков. map $ssl_preread_server_name $route { a.example.com a; b.example.com b; default “”; } upstream backend { server 127.0.0.1:8081 sid=a; server 127.0.0.1:8082 sid=b; sticky route $route; }
  • Добавлена поддержка извлечения значений Cookie из соединений по протоктлу RDP, используя директиву “rdp_preread” в модуле stream. Cookie будут записаны в переменные $rdp_cookie и $rdp_cookie_NAME, которые можно отразить в логе или использовать для привязки клиентского сеанса RDP к одному серверу при балансировке нагрузки. upstream rdp { hash $rdp_cookie_mstshash; # … }
  • Добавлены опции командной строки “-m” и “-M” для вывода списка встроенных и загруженных модулей.
  • В модуле http_acme, предназначенном для автоматизации получения и обновления сертификатов с использованием протокола ACME (Automatic Certificate Management Environment, применяется удостоверяющим центром Let’s Encrypt), реализована возможность сборки с криптографической библиотекой BoringSSL.
  • Разрешено указание нескольких директив “acme” в блоке “server”, что позволяет настроить привязку к одному виртуальному серверу сразу нескольких типов сертификатов. server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate $acme_cert_rsa; ssl_certificate_key $acme_cert_key_rsa; ssl_certificate $acme_cert_ecdsa; ssl_certificate_key $acme_cert_key_ecdsa; acme rsa; acme ecdsa; }
  • Из репозитория проекта nginx перенесены изменения, накопившиеся в nginx 1.27, например,
    добавлен новый модуль ngx_stream_pass_module (для проброса принятых соединений напрямую в любой слушающий сокет, связанный с такими модулями, как http, stream и mail), а в модуль stream добавлена поддержка виртуальных серверов, конфигурация которых определяется в блоке “server { … }” при помощи директивы server_name.
  • Добавлена опция “persistent”, позволяющая не ждать прохождения обязательных проверок состояния серверов после перезагрузки конфигурации, если ранее сервер уже был проверен.
  • Представлен новый метод балансировки “feedback”, который распределяет нагрузку по HTTP-серверам на основе метрик, полученных в ответе от проксируемого сервера или внешнего сервиса, что позволяет при балансировке учитывать такие параметры, как нагрузка на CPU, объем свободной памяти и состояние очередей ожидания.
Release. Ссылка here.