Поддержка http3 для upstream на nginx или любом другом веб-сервере

Вопрос или проблема

Мне удалось настроить nginx с https3, используя экспериментальные версии как из ванильного проекта, так и из проекта CloudFlare. Меня интересовало, есть ли что-то, что позволило бы прокси (в данный момент не имеет значения, nginx или любой другой проект) общаться с бэкендом через http3. Вот моя ситуация:

Пользователь

|

Прокси nginx http3, слушающий на domain1.com.

|

сеть, в которой UDP должен работать гораздо лучше

|

Бэкенд с включенным nginx http3+quiche, слушающий на domain2.com

Я пытался настроить http3 на прокси, но хотя он и получает HTTP для бэкенда, я не могу использовать прокси с http3. Например, proxy_http_version 3.0; пока еще недействителен даже в экспериментальном проекте nginx и т.д.

Может быть, у кого-то есть идеи о том, как это можно сделать, чтобы трафик можно было проксировать через http3 с domain1.com на domain2.com, или есть ли уже существующий проект, который мог бы мне помочь?

ДОПОЛНЕНИЕ: просто чтобы прояснить, это два решения, которые я тестировал.

  1. https://blog.cloudflare.com/experiment-with-http-3-using-nginx-and-quiche/
  2. https://www.nginx.com/blog/introducing-technology-preview-nginx-support-for-quic-http-3/

NGINX имеет экспериментальную ветку HTTP/3, я не знаю, поддерживает ли она HTTP/3 upstream, но вы можете попробовать.

Поскольку HTTP/3 еще не окончателен, он недоступен в основной ветке NGINX и вам нужно собрать его самостоятельно из его тестовой ветки, файл ReadMe кажется, перечисляет прогресс поддержки QUIC и отмечает, что базовый HTTP/3 поддерживается без особых ограничений относительно upstream, несмотря на то, что большинство примеров сосредоточено на использовании listen.

Смотрите также официальное объявление NGINX.

https://old.reddit.com/r/nginx/comments/1b7ghmf/is_it_possible_to_proxy_pass_to_a_http_3_quic/ktj6h0r/

Ах, я понимаю. Если мы говорим конкретно о proxy_pass к upstream, который использует quic, то это не сработает. Вы можете только настроить сам Nginx для принятия соединений для quic.

Ответ или решение

HTTP/3 — это новая версия протокола HTTP, которая работает на основе QUIC, и в настоящее время она всё ещё является в основном экспериментальной технологией. С недавними обновлениями, такими как тестовые версии от NGINX и Cloudflare, поддержка HTTP/3 стала более реальной, но остаются определенные ограничения, особенно когда речь идет о проксировании на стороне сервера.

Проблема проксирования с помощью HTTP/3

Ваша ситуация заключается в том, что вы настраиваете прокси-сервер с использованием NGINX, который принимает HTTP/3 запросы от пользователей, но не может проксировать эти запросы к бэкенду, работающему с HTTP/3, также реализованному на NGINX. На текущий момент основная проблема заключается в отсутствии поддержки proxy_http_version 3.0 для upstream на уровне конфигурации NGINX.

Текущие решения

  1. Использование экспериментальных билдов NGINX: Начиная с 2023 года, вы можете использовать экспериментальные версии NGINX с поддержкой QUIC и HTTP/3. Эти билды могут выполнять некоторые функции, но важно помнить, что они все еще находятся в процессе разработки, и их функционал может быть неполным или нестабильным.

  2. Настройки конфигурации: На данный момент в конфигурации NGINX не существует параметра proxy_http_version 3.0, который мог бы позволить использовать HTTP/3 для upstream. Прокси-сервер, работающий по этому протоколу, может принимать HTTP/3 только от клиентов. Это существует в отличие от возможности использовать его для передачи к бэкенду.

  3. Альтернативные решения: Если необходима передача данных через HTTP/3, вы можете рассмотреть возможность использования других прокси-серверов или программ, которые могут поддерживать подобную функциональность. Например, обратите внимание на решения, такие как Caddy или Envoy, которые находятся на стадии более активной разработки в этом направлении.

Рекомендации

  • Следите за обновлениями: В связи с тем, что HTTP/3 находится на стадии внедрения, важно следить за обновлениями в документации и сообществах, связанных с NGINX и подобными проектами. Постоянно появляются новые версии и исправления, которые могут улучшить поддержку.

  • Участие в сообществе: Участвуйте в обсуждениях на форумах и сообществах, сконцентрированных на Web-технологиях. Это может помочь вам найти пользователей, которые уже сталкивались с аналогичными проблемами.

  • Тестирование альтернатив: Попробуйте установить и протестировать другие прокси-серверы, которые могут предоставить более гибкие решения для использования HTTP/3 и QUIC.

Заключение

Хотя в настоящее время NGINX не поддерживает проксирование на уровне HTTP/3 из-за отсутствия соответствующих его настроек, вы можете оставаться на гребне волны обновлений и тестировать новые технологии по мере их развития. Важно оптимизировать архитектуру вашего веб-сервиса, чтобы она могла адаптироваться к изменениям в условиях рынка, обеспечивая тем самым надежность и стабильность работы ваших сервисов.

Оцените материал
Добавить комментарий

Капча загружается...