После года разработки, команда nginx анонсировала выпуск новой стабильной версии nginx 1.26.0, высокопроизводительного HTTP -сервера и многопротокольного прокси-сервера.
Новая версия включает все ключевые изменения, реализованные в предыдущей основной ветке 1.25.x. Следующие обновления в стабильной ветке 1.26 будут фокусироваться исключительно на исправлении серьёзных ошибок и уязвимостей.
В ближайшее время планируется запуск основной ветки nginx 1.27, которая продолжит развитие новых функций. Пользователям, не имеющим потребности в совместимости со сторонними модулями, рекомендуется использовать основную ветку, обновляемую каждые 3 месяца для коммерческого продукта Nginx Plus.
По данным Netcraft, nginx управляет примерно 243 млн сайтов, по сравнению с 289 млн годом ранее. На текущий момент nginx занимает 18.15% рынка активных сайтов, уступая лишь Apache, доля которого составляет 20.09%. Cloudflare и Google также значительно представлены на рынке. Несмотря на общее снижение доли, nginx сохраняет лидерство по общему количеству управляемых сайтов, с 22.31% рынка.
В новую версию nginx 1.26.0 внесено несколько значимых улучшений и нововведений, которые углубляют функциональные возможности и улучшают общую производительность и безопасность. Вот подробный обзор ключевых добавлений:
- Поддержка HTTP/3:
- Был добавлен модуль ngx_http_v3, который предоставляет экспериментальную поддержку для протокола HTTP/3. Протокол использует QUIC (Quick UDP Internet Connections) в качестве транспортного слоя для HTTP/2, что позволяет улучшить производительность за счёт меньшего времени установления соединений и меньших задержек при потере пакетов. Для включения модуля необходимо использовать опцию конфигурации --with-http_v3_module.
- Изменения в HTTP/2:
- Введена отдельная директива http2 для выборочного включения HTTP/2 на уровне отдельных серверных блоков, что предоставляет большую гибкость в настройке.
- Улучшена защита от DoS-атак типа Rapid Reset, где атакующий может быстро открывать и закрывать потоки в рамках одного соединения. В ответ на это внедрено новое ограничение, не позволяющее по умолчанию создавать более 256 новых потоков за каждый цикл обработки событий.
- Модули для работы с соединениями:
- Добавлен модуль ngx_stream_pass_module, который позволяет прямую передачу принятых соединений в любой активный сокет, работающий с модулями http, stream и mail. Это может использоваться для упрощения проксирования и балансировки нагрузки.
- В модуле stream реализована поддержка параметров deferred, accept_filter, и setfib в директиве listen, что улучшает управление входящими соединениями и маршрутизацию.
- Управление производительностью и ресурсами:
- Реализована поддержка определения размера блока (cache line), что важно для архитектур, оптимизированных для использования в серверных решениях.
- Повышена производительность и управление буферами для HTTP/2, особенно в автоматическом определении и управлении соединениями.
- Устранение устаревших функций:
- Удалена поддержка технологии Server Push в HTTP/2 и директивы ssl, которые были объявлены устаревшими в предыдущих версиях, что свидетельствует о стремлении к совершенствованию и упрощению кодовой базы.
Кроме того, был опубликован стабильный выпуск FreeNginx 1.26.0, форка проекта, разрабатываемого без корпоративного вмешательства и ориентированного на некоммерческое использование, что ведёт Максим Дунин, один из ведущих разработчиков Nginx.