Это возможно с Haproxy. Вы можете настроить прокси-сервер TCP и извлечь SNI и выполнить маршрутизацию на основе SNI. Вот пример:
backend be.app1
mode tcp
no option checkcache
no option httpclose
tcp-request inspect-delay 5s
tcp-request content accept if { req.ssl_hello_type 1 }
tcp-request content reject
use-server server1 if { req.ssl_sni -m beg app1. }
server server1 server1:8443 check id 1 weight 0
Необходимо отложить запрос до получения приветствия SSL, иначе haproxy попытается установить соединение до получения заголовка SNI.
Я использую серверы с весом 0, потому что в моей текущей конфигурации у меня только один сервер работает для каждого SNI, и я не хочу, чтобы они получали случайные запросы. Вероятно, вы можете найти лучшие способы играть с этим.
Надеюсь, это поможет.