Вопрос или проблема
Мне удалось настроить 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, или есть ли уже существующий проект, который мог бы мне помочь?
ДОПОЛНЕНИЕ: просто чтобы прояснить, это два решения, которые я тестировал.
NGINX имеет экспериментальную ветку HTTP/3, я не знаю, поддерживает ли она HTTP/3 upstream, но вы можете попробовать.
Поскольку HTTP/3 еще не окончателен, он недоступен в основной ветке NGINX и вам нужно собрать его самостоятельно из его тестовой ветки, файл ReadMe кажется, перечисляет прогресс поддержки QUIC и отмечает, что базовый HTTP/3 поддерживается без особых ограничений относительно upstream, несмотря на то, что большинство примеров сосредоточено на использовании listen
.
Смотрите также официальное объявление NGINX.
Ах, я понимаю. Если мы говорим конкретно о 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.
Текущие решения
-
Использование экспериментальных билдов NGINX: Начиная с 2023 года, вы можете использовать экспериментальные версии NGINX с поддержкой QUIC и HTTP/3. Эти билды могут выполнять некоторые функции, но важно помнить, что они все еще находятся в процессе разработки, и их функционал может быть неполным или нестабильным.
-
Настройки конфигурации: На данный момент в конфигурации NGINX не существует параметра
proxy_http_version 3.0
, который мог бы позволить использовать HTTP/3 для upstream. Прокси-сервер, работающий по этому протоколу, может принимать HTTP/3 только от клиентов. Это существует в отличие от возможности использовать его для передачи к бэкенду. -
Альтернативные решения: Если необходима передача данных через HTTP/3, вы можете рассмотреть возможность использования других прокси-серверов или программ, которые могут поддерживать подобную функциональность. Например, обратите внимание на решения, такие как Caddy или Envoy, которые находятся на стадии более активной разработки в этом направлении.
Рекомендации
-
Следите за обновлениями: В связи с тем, что HTTP/3 находится на стадии внедрения, важно следить за обновлениями в документации и сообществах, связанных с NGINX и подобными проектами. Постоянно появляются новые версии и исправления, которые могут улучшить поддержку.
-
Участие в сообществе: Участвуйте в обсуждениях на форумах и сообществах, сконцентрированных на Web-технологиях. Это может помочь вам найти пользователей, которые уже сталкивались с аналогичными проблемами.
-
Тестирование альтернатив: Попробуйте установить и протестировать другие прокси-серверы, которые могут предоставить более гибкие решения для использования HTTP/3 и QUIC.
Заключение
Хотя в настоящее время NGINX не поддерживает проксирование на уровне HTTP/3 из-за отсутствия соответствующих его настроек, вы можете оставаться на гребне волны обновлений и тестировать новые технологии по мере их развития. Важно оптимизировать архитектуру вашего веб-сервиса, чтобы она могла адаптироваться к изменениям в условиях рынка, обеспечивая тем самым надежность и стабильность работы ваших сервисов.