Бесплатно Экспресс-аудит сайта:

25.04.2024

Nginx 1.26.0:HTTP/3, улучшенная защита от DoS-атак и оптимизация производительности

После года разработки, команда 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 внесено несколько значимых улучшений и нововведений, которые углубляют функциональные возможности и улучшают общую производительность и безопасность. Вот подробный обзор ключевых добавлений:

  1. Поддержка HTTP/3:
    • Был добавлен модуль ngx_http_v3, который предоставляет экспериментальную поддержку для протокола HTTP/3. Протокол использует QUIC (Quick UDP Internet Connections) в качестве транспортного слоя для HTTP/2, что позволяет улучшить производительность за счёт меньшего времени установления соединений и меньших задержек при потере пакетов. Для включения модуля необходимо использовать опцию конфигурации --with-http_v3_module.
  2. Изменения в HTTP/2:
    • Введена отдельная директива http2 для выборочного включения HTTP/2 на уровне отдельных серверных блоков, что предоставляет большую гибкость в настройке.
    • Улучшена защита от DoS-атак типа Rapid Reset, где атакующий может быстро открывать и закрывать потоки в рамках одного соединения. В ответ на это внедрено новое ограничение, не позволяющее по умолчанию создавать более 256 новых потоков за каждый цикл обработки событий.
  3. Модули для работы с соединениями:
    • Добавлен модуль ngx_stream_pass_module, который позволяет прямую передачу принятых соединений в любой активный сокет, работающий с модулями http, stream и mail. Это может использоваться для упрощения проксирования и балансировки нагрузки.
    • В модуле stream реализована поддержка параметров deferred, accept_filter, и setfib в директиве listen, что улучшает управление входящими соединениями и маршрутизацию.
  4. Управление производительностью и ресурсами:
    • Реализована поддержка определения размера блока (cache line), что важно для архитектур, оптимизированных для использования в серверных решениях.
    • Повышена производительность и управление буферами для HTTP/2, особенно в автоматическом определении и управлении соединениями.
  5. Устранение устаревших функций:
    • Удалена поддержка технологии Server Push в HTTP/2 и директивы ssl, которые были объявлены устаревшими в предыдущих версиях, что свидетельствует о стремлении к совершенствованию и упрощению кодовой базы.

Кроме того, был опубликован стабильный выпуск FreeNginx 1.26.0, форка проекта, разрабатываемого без корпоративного вмешательства и ориентированного на некоммерческое использование, что ведёт Максим Дунин, один из ведущих разработчиков Nginx.