LINUX.ORG.RU
ФорумAdmin

haproxy mode tcp по имени хоста

 , nginx stream


0

1

Доброго времени суток.

Есть ли возможность имея:
один ip-адрес
раскидывать запросы на разные машины в зависимости от имени узла?

Подробнее:

HAproxy 192.168.0.10:5000  
hostname "host1"  
hostname "host2"  
|
Если "host1" => 192.168.1.100:5000
Если "host2" => 192.168.1.200:5000

При использовании mode http проблем нет.
Так же с подобной задачей прекрасно справляется и nginx.

Но в данном случае нужно именно tcp, а не http.

nginx stream не умеет, в зависимости от имени хоста, раскидывать на разные машины. Вернее, как мне подсказали, умеет, только в коммерческой редакции (поправьте, если это не так).

Умеет ли так делать HAProxy?

★★★★★

Ответ на: комментарий от vvn_black

Вот и я не знаю, как это получается у других.
Возможно из заголовка пакета, если к хосту HAproxy обращаются по имени хоста.

В интернете же есть прокси-провайдеры, которые умеют по имени проксировать на определенный узел, при этом не обязательно это будет http.
Тот же самый cloudflare умеет делать подобное и по tcp, и по upd… Хотя, наверное это не очень корректный пример. Но они и не единственные, кто так делают.

Тогда другой вопрос, каким инструментом можно подобное осуществить?

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

в bigbluebutton используют такой конфиг

frontend nginx_or_turn
  bind *:443 ssl crt /etc/haproxy/certbundle.pem ssl-min-ver TLSv1.2 alpn h2,http/1.1,stun.turn
  mode tcp
  option tcplog
  tcp-request content capture req.payload(0,1) len 1
  use_backend nginx-http2 if { ssl_fc_alpn h2 }
  use_backend nginx if { ssl_fc_alpn http/1.1 }
  use_backend turn if { ssl_fc_alpn stun.turn }
  use_backend %[capture.req.hdr(0),map_str(/etc/haproxy/protocolmap,turn)]
  default_backend turn
можно анализировать ssl_fc_sni.

vel ★★★★★
()
Ответ на: комментарий от no-dashi-v2

один ip-адрес

нужно именно tcp, а не http

Умеет ли так делать HAProxy?

Нет. И никто не умеет. И уметь не может. Потому что в TCP нет «имени хоста».

This. На клиенте днс резолвится в айпи и подключение идёт уже по нему. Если сам протокол не подразумевает никаких hostnane внутри (как заголовок Host в http/https), то никак.

skyman ★★★
()