nginx 1.31.4 — PROXY Protocol v2 для stream и mail и исправления HTTP/2, HTTP/3 и gRPC

nginx 1.31.4 вышел 19 августа 2026 года в mainline-ветке. Релиз добавляет передачу PROXY Protocol v2 к бэкендам в модулях stream и mail, унифицирует формирование Host и :authority для проксируемых запросов и исправляет сбои в HTTP/2, HTTP/3, gRPC и ряде модулей.

nginx 1.31.4
nginx 1.31.4

PROXY Protocol v2 появился в stream и mail

Главное функциональное изменение nginx 1.31.4 — поддержка бинарной версии PROXY Protocol v2 при подключении к проксируемому серверу. В официальном changelog релиз датирован 19 августа 2026 года, а на странице загрузок версия 1.31.4 указана как актуальная mainline-сборка.

Директива proxy_protocol в ngx_stream_proxy_module и ngx_mail_proxy_module теперь принимает три значения:

proxy_protocol off;
proxy_protocol on;
proxy_protocol v2;

Логика при этом остается обратно совместимой:

  • off — PROXY Protocol не отправляется;
  • on — используется PROXY Protocol v1 в текстовом формате;
  • v2 — используется PROXY Protocol v2 в бинарном формате.

Например, для TCP-прокси в stream конфигурация может выглядеть так:

stream {
    server {
        listen 443;
        proxy_pass 10.0.0.10:8443;
        proxy_protocol v2;
    }
}

PROXY Protocol применяется между прокси и следующим узлом цепочки и позволяет передать сведения об исходном соединении, в том числе адрес клиента, даже если непосредственное TCP-соединение с бэкендом устанавливает nginx. Поддержка v2 особенно полезна в инфраструктуре, где балансировщики, L4-сервисы или почтовые бэкенды уже работают с бинарным форматом протокола.

Автоматического перехода с v1 на v2 нет. Если существующая конфигурация содержит proxy_protocol on;, после обновления она продолжит использовать PROXY Protocol v1. Для включения новой версии нужно явно указать proxy_protocol v2;, а принимающая сторона должна поддерживать этот формат.

Host и :authority к HTTP/2 и gRPC-бэкендам

nginx 1.31.4 меняет формирование информации об имени узла при отправке запросов к upstream-серверам. Для HTTP/2 и gRPC запросы к бэкенду теперь всегда отправляются с псевдозаголовком :authority, а для HTTP/1.1 — с обычным заголовком Host.

Это изменение делает поведение прокси более однозначным относительно используемой версии HTTP:

Протокол к бэкендуnginx 1.31.4
HTTP/1.1Host
HTTP/2:authority
gRPC:authority

Для большинства конфигураций переход должен быть прозрачным. Дополнительная проверка нужна там, где upstream-приложение, промежуточный прокси или собственная логика маршрутизации жестко завязаны на конкретное представление заголовка имени хоста.

После обновления таких систем имеет смысл проверить виртуальный хостинг, маршрутизацию gRPC и правила, которые анализируют Host или HTTP/2-псевдозаголовки.

Исправлен сбой worker-процесса при использовании select

В nginx 1.31.4 устранена ошибка, из-за которой worker-процесс мог завершиться с segmentation fault при использовании метода обработки событий select.

На современных Linux-системах nginx обычно использует более эффективные механизмы вроде epoll, поэтому исправление не затронет большинство типовых серверов напрямую. Оно важнее для платформ и конфигураций, где select выбирается автоматически либо задан явно:

events {
    use select;
}

Если сервер действительно работает через select, обновление снижает риск аварийного завершения worker-процесса. Проверить собранную конфигурацию и параметры nginx перед перезагрузкой можно стандартной командой:

nginx -t

gRPC — неполные ответы теперь считаются ошибочными

Релиз меняет обработку некорректных gRPC-ответов. Если бэкенд объявил ненулевой Content-Length, но фактически вернул неполный ответ, nginx теперь рассматривает такую передачу как malformed response.

Практический эффект заметен прежде всего в инфраструктуре, где nginx проксирует gRPC-сервисы. Некорректно завершившийся upstream-ответ больше не должен восприниматься как нормальная передача только потому, что соединение завершилось без ожидаемого объема данных.

Это упрощает обнаружение проблем на стороне gRPC-бэкенда: несоответствие заявленной и фактической длины ответа становится явной протокольной ошибкой, а не неоднозначным результатом обработки.

Совместимость сторонних модулей после nginx 1.31.3

В nginx 1.31.4 исправлена проблема бинарной совместимости со сторонними модулями, использующими script codes. Ошибка появилась в nginx 1.31.3, поэтому обновление особенно актуально для тех, кто уже перешел на предыдущий mainline-релиз и загружает внешние динамические модули.

Для серверов с нестандартным набором модулей после установки новой версии стоит выполнить как минимум:

nginx -t
nginx -V

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

Исправления HTTP/2, HTTP/3, image_filter и Perl

Помимо отдельных изменений, разработчики указывают серию исправлений в HTTP/2, HTTP/3, ngx_http_image_filter_module и ngx_http_grpc_module. Отдельный баг устранен в ngx_http_perl_module.

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

Особенно внимательно обновление стоит протестировать администраторам, которые используют:

  • HTTP/2 или HTTP/3 на высоконагруженных фронтендах;
  • nginx как gRPC-прокси;
  • ngx_http_image_filter_module;
  • ngx_http_perl_module;
  • сторонние динамические модули после перехода на 1.31.3.

nginx 1.31.4 не является отдельным security-релизом

В changelog nginx 1.31.4 нет новых записей с пометкой Security. Предыдущая версия 1.31.3, выпущенная 15 июля 2026 года, содержала исправления CVE-2026-42533, CVE-2026-60005 и CVE-2026-56434.

Поэтому смысл обновления зависит от исходной версии. Для уже работающего nginx 1.31.3 релиз 1.31.4 в первую очередь исправляет регрессии и протокольные проблемы. Если же сервер остается на более раннем mainline-релизе, переход на 1.31.4 одновременно включает и исправления безопасности, вошедшие в 1.31.3.

При этом 1.31.4 относится к mainline-ветке. На момент публикации nginx.org отдельно предлагает стабильную ветку 1.30.x, актуальная версия которой — 1.30.4. Пользователям stable-ветки не требуется переходить на mainline только ради номера 1.31.4, если новая функциональность им не нужна.

Резюме

nginx 1.31.4 — технический mainline-релиз с одним заметным новым сетевым механизмом и набором исправлений. Поддержка proxy_protocol v2 расширяет возможности интеграции nginx с L4-балансировщиками и бэкендами, которые ожидают бинарный PROXY Protocol, а изменения HTTP/2, HTTP/3 и gRPC повышают предсказуемость проксирования.

Наиболее высокий приоритет обновления у серверов на nginx 1.31.3 со сторонними модулями, у конфигураций с select, а также у инфраструктуры, активно использующей gRPC, HTTP/2 или HTTP/3. Перед внедрением в production разумно проверить конфигурацию через nginx -t, совместимость динамических модулей и прохождение запросов через критичные upstream-маршруты.

Для пользователей stable-ветки 1.30.x релиз 1.31.4 не требует немедленной миграции. Это обновление прежде всего для тех, кто уже следует mainline-ветке или кому нужна передача PROXY Protocol v2 к upstream-серверам.

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться