LINUX.ORG.RU
решено ФорумAdmin

Проксирование HTTP/2 в Backend

 , , , ,


0

1

Можно ли проксировать HTTP/2 запросы через какой-нибудь веб-сервер в бэкенд?

Т.е. пользователь обращается к ресурсу, веб-сервер получает HTTP/2 запрос и передает его уже в бэкенд, в котором этот запрос обрабатывается.

И как в целом такая схема работает?

Client <-> Web Server <-> Backend

Данные от Client к Web Server шифруются с помощью TLS. Т.к. Web Server проксирует запрос, то он просто должен передать зашифрованный пакет в Backend? Или Web Server его расшифрует и передаст Backend-у расшифрованный HTTP/2 пакет?

И какой из веб-серверов умеет проксировать HTTP/2? Я поискал информацию по Nginx-у и походу он не умеет проксировать HTTP/2

Инфа тут:

http://serverfault.com/questions/765258/use-http-2-0-between-nginx-reverse-pr...

http://stackoverflow.com/questions/41637076/http2-with-node-js-behind-nginx-p...

По идее хотелось бы схему вроде этой:

Client <- HTTP/2 -> Nginx <- UNIX Socket -> Backend

Т.е. клиент обращается к серверу Nginx по HTTP/2, Nginx проксирует HTTP/2 пакет через UNIX Socket Backend-у, где уже обрабатывается пакет и отсылается ответ пользователю...

Заранее благодарю за ответы.

Перемещено leave из general



Последнее исправление: Sorcus (всего исправлений: 2)

А ссылки, которые вы привели, о том, что nginx не умеет работать вот так:

Nginx <- HTTP/2 -> Backend

А с этой частью все нормально уже года два:

Client <- HTTP/2 -> Nginx

l0stparadise ★★★★★
()

Я не увидел где у тебя собственно reverse proxy в схеме. unix socket означает, что у тебя application среда на том же сервере, что и сам nginx. Или ты там socat или чем-то другим извращаешься?

anonymous_sama ★★★★★
()
Ответ на: комментарий от l0stparadise

Дык, речь не про передачу HTTP/2 пакета от клиента к веб-серверу, а про передачу от клиента к backend-у через nginx (любой другой веб сервер)

Sorcus
() автор топика
Ответ на: комментарий от anonymous_sama

Ну я просто более подходящего названия не нашел. Извиняюсь, если это неправильно...Ну да, на том же сервере.

Sorcus
() автор топика
Ответ на: комментарий от Sorcus

Я не понял, что ты хочешь этим добиться и зачем тебе это надо, но haproxy это умеет. Кстати, сегодня кто-то в nginx-devel спрашивал про HTTP/2 upstream support, причем так и не ответил зачем это ему надо.

anonymous_sama ★★★★★
()
Ответ на: комментарий от anonymous_sama

Любопытство наверное. Можно ли такое реализовать без лишнего гемороя.

1. Берем быстрый Nginx

2. Используем для общения с бэкендом быстрые unix сокеты

3. Используем HTTP/2 для общения с клиентом

3. ...

4. PROFIT!

Как-то так :-D

Sorcus
() автор топика
Ответ на: комментарий от Sorcus

nginx умеет http2, но он не умеет upstream http2. То что ты описал, реализовать не проблема и так практически у всех, у кого не старый nginx и он не забыл там выставить http2.

anonymous_sama ★★★★★
()
Ответ на: комментарий от Sorcus

С точки зрения проксирующего веб-сервера это одно и то же (два соединения, одно клиента с nginx, второе nginx с бэкэндом). Nginx может принимать входящие http2 соединения, но не умеет открывать исходящие. Пинайте haproxy, из известных, емнип, такое умеет только он, ссылку дали выше.

l0stparadise ★★★★★
()
Последнее исправление: l0stparadise (всего исправлений: 1)

Хз, взлетит или нет. Можно пробовать nginx в режиме stream или haproxy.

trancefer ★★
()

Или nginx+stream, или haproxy. Но лучше Таненбаума, включить логику и понять, что это бессмысленно.

leave ★★★★★
()

Здравствуйте! Кто может оказать помощь в настройке nginx для проксирования и балансировки бекэнда на основе gRPC сервера?

pcadviser
()
Ответ на: комментарий от pcadviser

Кажись ты разделом ошибся... Тебе в Job с таким вопросом.

Sorcus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.