nginx 1.31.8 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.8
Для HTTP/3 нужно опубликовать и UDP-порт, а не только TCP: docker run -d -p 80:80 -p 443:443 -p 443:443/udp codeitus/nginx
Основные изменения:
- Изменение во внутреннем API: теперь JSON-парсер сообщает строки с escape-последовательностями как отдельные события, а функция ngx_json_unescape_string() декодирует строку в отдельный буфер.
- Изменение: теперь путь, указанный в директиве «working_directory», задаётся относительно префиксного каталога nginx, но не относительно текущего каталога.
- Исправлена ошибка: процессы рабочих могли завершаться при старте или во время перенастройки, если в директиве «working_directory» был указан неверный каталог.
- Исправлена ошибка: процессы рабочих могли быть внезапно завершены по сигналу SIGBUS при использовании HTTP/3 на платформах с жёсткими требованиями к выравниванию.
- Исправлена ошибка: в журналах могли появляться предупреждения «recv() failed (5: Input/output error)» при закрытии SSL-соединений, если использовался kernel TLS с OpenSSL 3.2.0 или новее.
- Исправлена ошибка: nginx собирался на Solaris неудачно при использовании опции
--with-control-api.
