Обзор Nginx 1.30: главные функции MPTCP, ECH, HTTP/2 proxy, Sticky sessions и Early Hints

Nginx 1.30: главные новинки, которые изменят ваш веб-сервер

14 апреля 2026 года состоялся релиз стабильной ветки nginx 1.30. Это не рядовое обновление, а настоящий прорыв: поддержка Multipath TCP (MPTCP), шифрование Encrypted ClientHello (ECH), долгожданный HTTP/2 для прокси, механизм sticky sessions «из коробки» и многое другое. Если вы до сих пор используете nginx 1.28 или даже 1.29 – этот обзор покажет, почему nginx 1.30 должен стать вашим новым стандартом.

Релизnginx-1.30.0 стабильная версия на github

В этой статье я разберу каждую значимую новинку с примерами конфигурации, дам практические советы по внедрению и приведу свежие данные о рыночной доле nginx. Поехали.

Multipath TCP (MPTCP) — скорость и отказоустойчивость на новом уровне

nginx 1.30 первым среди популярных веб-серверов получил нативную поддержку протокола Multipath TCP (RFC 8684). MPTCP позволяет одновременно использовать несколько сетевых интерфейсов (Wi-Fi + 5G, Ethernet + LTE) для одного соединения. Что это даёт на практике:

  • Рост пропускной способности – агрегация каналов.

  • Отказоустойчивость – при обрыве одного интерфейса трафик мгновенно переключается на другой без разрыва TCP-сессии.

  • Идеально для CDN, API-шлюзов и стриминга.

Multipath TCP (MPTCP) в nginx 1.30

Как включить MPTCP в nginx 1.30

Достаточно добавить параметр multipath в директиву listen

server {
listen 80 multipath;
listen 443 ssl multipath;
server_name example.com;
# … остальная конфигурация
}

Важно: MPTCP должен быть также поддержан на уровне ядра Linux (начиная с версии 5.6) и в сети. Проверить можно командой:

sysctl net.mptcp.enabled

Encrypted ClientHello (ECH) — конфиденциальность без компромиссов

nginx 1.30 реализует TLS-расширение Encrypted ClientHello (ECH) – эволюцию устаревшего ESNI. В отличие от ESNI, ECH шифрует всё сообщение ClientHello, включая поле PSK (Pre-Shared Key) и другие метаданные. Теперь даже провайдер или корпоративный фаервол не узнают, какие сайты вы посещаете.

Настройка ECH в nginx 1.30

Для работы потребуется OpenSSL 4.0 или новее. Затем сгенерируйте конфигурационный файл ECHConfig и укажите его в директиве ssl_ech_file:

server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_ech_file /etc/nginx/ssl/echconfig.pem;
# …
}

ECH шифрует всё сообщение ClientHello в nginx 1.30 защита от прослушивания

Важно: ECH пока поддерживается только в современных браузерах (Chrome 120+, Firefox 125+). Но внедрение в nginx 1.30 делает ваш сервер готовым к будущему приватного интернета.

Спецификация ECH (draft-ietf-tls-esni-13)

HTTP/2 для прокси (ngx_http_proxy_module) — ускорение бэкендов

Раньше nginx мог проксировать запросы на апстримы только по HTTP/1.1, даже если сам принимал трафик по HTTP/2. nginx 1.30 исправляет это: модуль ngx_http_proxy_module теперь полностью поддерживает HTTP/2 при общении с бэкендами.

Пример конфигурации

location /api/ {
proxy_pass https://backend_cluster;
proxy_http_version 2.0; # Явно включаем HTTP/2
proxy_set_header Host $host;
}

Плюсы для вас:

  • Меньше задержек за счёт мультиплексирования.

  • Экономия соединений при большом количестве микросервисов.

  • Идеально для gRPC — теперь не нужно использовать отдельный модуль.

Sticky sessions (привязка сессий) без сторонних модулей

Балансировка с сохранением сессии (sticky sessions) раньше требовала установки nginx-sticky-module или костылей с Redis. nginx 1.30 вводит родную директиву sticky с тремя методами:

МетодОписание
cookienginx сам устанавливает cookie с идентификатором сервера.
routeБэкенд назначает маршрут через специальный заголовок.
learnnginx анализирует ответы апстрима и «запоминает» закрепление.

Базовая настройка cookie-метода

upstream backend {
server app1.example.com;
server app2.example.com;
sticky cookie srv_id expires=1h domain=.example.com path=/;
}

server {
location / {
proxy_pass http://backend;
}
}

Теперь пользователь всегда будет попадать на тот же бэкенд, что критично для корзин, авторизации и WebSocket.

HTTP/103 Early Hints — ускорение загрузки страниц

nginx 1.30 поддерживает HTTP-код 103 (Early Hints). Сервер может отправить браузеру список критических ресурсов (CSS, JS, шрифты) ещё до того, как сгенерирован полный ответ. Браузер начнёт загружать их параллельно.

Включить Early Hints в nginx 1.30

location / {
early_hints on;
proxy_pass http://backend;
add_header Link «</css/style.css>; rel=preload; as=style» always;
}

При использовании с прокси, бэкенд может сам возвращать заголовки Link с типом preload, а nginx 1.30 преобразует их в код 103.

Исследования показывают улучшение метрики LCP (Largest Contentful Paint) на 15–25% без изменения бэкенда.

Улучшения безопасности и ограничений

Директива max_headers – защита от атак

Новая директива max_headers ограничивает количество HTTP-заголовков в запросе. При превышении – ошибка 400.

http {
max_headers 100; # глобально
server {
max_headers 200; # переопределение для конкретного хоста
}
}

Сжатие сертификатов TLS – отключено по умолчанию

В nginx 1.30 по умолчанию отключено сжатие сертификатов TLSv1.3 (раньше оно было включено). Это снижает риск атаки CRIME на TLS-уровне. Если вам нужно сжатие – верните явно:

ssl_certificate_compression on;

Новые переменные для гибкого логирования и маршрутизации

nginx 1.30 добавляет несколько переменных, которые сделают ваши конфиги чище:

  • $request_port – порт из строки запроса или заголовка Host.

  • $is_request_port – двоеточие (:), если порт указан.

  • $ssl_sigalg – алгоритм подписи сертификата сервера.

  • $ssl_client_sigalg – алгоритм подписи клиентского сертификата.

Пример использования в логах:

log_format main ‘$remote_addr — $remote_user [$time_local] «$request» ‘
‘$status $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «$request_port» «$ssl_sigalg»‘;

Keepalive по умолчанию и HTTP/1.1 для прокси

В nginx 1.30 модуль ngx_http_proxy_module теперь по умолчанию использует:

  • proxy_http_version 1.1 (раньше был 1.0)

  • proxy_set_header Connection "" (отключает старый заголовок)

Что это значит? Keep-alive между nginx и бэкендами включён без дополнительных настроек – снижается количество TCP-соединений и задержек.

Если вы хотите вернуть старое поведение (например, для совместимости с очень старыми бэкендами):

proxy_http_version 1.0;
proxy_set_header Connection «close»;

Статистика: почему nginx 1.30 укрепит лидерство

  • nginx обслуживает 321 млн сайтов (рост с 245 млн год назад).

  • Среди всех активных сайтов – доля 16,08% (второе место после Cloudflare).

  • Среди миллиона самых посещаемых сайтов – 19,85% (второе место).

W3Techs сообщает: 32.8% топ-миллиона сайтов используют nginx. И с выходом nginx 1.30 эта цифра будет только расти – особенно за счёт улучшений, которые мы разобрали.

FreeNginx 1.30 — что нужно знать о форке

Одновременно с nginx 1.30 вышел FreeNginx 1.30 от Максима Дунина (экс-разработчик nginx). Форк позиционируется как некоммерческий, без корпоративного контроля. Основные отличия от основной версии:

  • Поддержка ECH (как и в nginx 1.30).

  • Улучшенная limit_rate + новые send_min_rate / client_body_min_rate.

  • GeoIP2 вместо устаревшей GeoIP.

  • Дополнительная защита модуля XSLT.