nginx 1.31.7 Mainline с поддержкой HTTP/3 добавлен в репозиторий CodeIT. http2 и ngx_cache_purge встроены, а OpenSSL динамически линкуется с официальным OpenSSL 4.0.3 с поддержкой QUIC. Модуль сжатия Brotli от Google и ngx_http_geoip2 поставляются как динамические модули — в пакетах nginx-module-brotli и nginx-module-geoip2, оба необязательны, как и остальные модули nginx-module-*. Пакеты собраны для RHEL, CentOS, AlmaLinux, Rocky Linux и Oracle Linux 7, 8, 9 и 10, а также для Ubuntu 22.04 и 24.04.
Это обновление устраняет уязвимости. Рекомендуется обновиться.
Остальные динамические модули собраны отдельно и устанавливаются по желанию: nginx-module-lua вместе с lua-resty-core и lua-resty-lrucache, nginx-module-acme для автоматических сертификатов ACMEv2, nginx-module-njs, nginx-module-perl, nginx-module-xslt и nginx-module-image-filter. Каждый пакет сам добавляет строку load_module в /etc/nginx/modules-enabled, поэтому модуль работает сразу после установки и править nginx.conf вручную не нужно. Lua и ACME собираются для EL9, EL10 и Ubuntu; для EL7 вместо них есть nginx-module-geoip, а njs, Perl, XSLT и image-filter доступны только в rpm.
Тот же выпуск есть на Docker Hub как codeitus/nginx: образ собран на AlmaLinux 9 из этих же пакетов и опубликован для amd64 и arm64:
- самый свежий образ, из того пула, который вышел последним: docker pull codeitus/nginx
- самый свежий образ Mainline: docker pull codeitus/nginx:mainline
- именно этот выпуск: docker pull codeitus/nginx:1.31.7
Для HTTP/3 нужно опубликовать и UDP-порт, а не только TCP: docker run -d -p 80:80 -p 443:443 -p 443:443/udp codeitus/nginx
Основные изменения:
- Feature: модуль ngx_http_geoip_module и модуль ngx_stream_geoip_module теперь поддерживают базы данных в формате MaxMind DB (MMDB).
- Feature: теперь сертификаты SSL для back end можно проверять по IP-адресу.
- Feature: теперь QUIC поддерживает перенастройку и двоичное обновление при использовании директивы «quic_bpf».
- Change: модуль ngx_http_v2_module теперь использует схему приоритизации из RFC 9218, а сигналы приоритета из RFC 7540 игнорируются.
- Bugfix: в рабочем процессе мог возникать сегментационный отказ, либо в журналах могли появляться предупреждения «request count is zero», если строка заголовка «X-Accel-Redirect» была закэширована, а затем закэшированный ответ был отправлен клиенту.
- Bugfix: сегментационный отказ мог возникать в рабочем процессе, если для модуля ngx_http_dav_module использовали обработку методов COPY и MOVE в location с директивой «alias».
- Bugfix: соединения QUIC могли закрываться с сообщением «quic flood detected» в журналах, если директиве «http3_stream_buffer_size» задавалось небольшое значение; ошибка появлялась в 1.27.5.
- Bugfix: закрытие SSL-соединения без close_notify считалось корректным завершением, включая случай, когда соединение было сброшено; теперь в этом случае в журналах появляются ошибки «SSL_read() failed».
- Bugfix: сообщения «[crit] SSL_write() failed» могли появляться в журналах, когда возникала ошибка при чтении из SSL-соединения.
Исправленные уязвимости:
- Security: переполнение буфера могло возникать в рабочем процессе при использовании директивы «alias», если URI запроса изменялся директивой «rewrite» и затем сопоставлялся с путем к файлу (CVE-2026-15176).
- Security: переполнение буфера могло возникать в рабочем процессе при вычислении строковых выражений с переменными, что затрагивало вычисление корня документа и ведение журнала запросов в модулях http и stream (CVE-2026-93479).
- Security: при использовании HTTP/3 часть неизвестного кадра могла обрабатываться как тело запроса, что могло приводить к обходу лимита «client_max_body_size» или к внедрению данных в проксируемый запрос (CVE-2026-95101).
- Security: при использовании ротации ключей сеансовых билетов TLS один из ключей оставался неинициализированным, что могло позволять подделывать сеанс (CVE-2026-97629).
- Security: при использовании асинхронного ввода-вывода файлов (AIO) в некоторых конфигурациях мог возникать use-after-free, если на странице SSI используются команды «include virtual» (CVE-2026-97205).
