Điều này có thể với Haproxy. Bạn có thể thiết lập proxy TCP và trích xuất SNI và thực hiện định tuyến dựa trên SNI. Đây là một ví dụ:
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
Điều cần thiết là trì hoãn yêu cầu cho đến khi bạn nhận được SSL xin chào, nếu không, haproxy sẽ cố gắng tạo kết nối trước khi nhận tiêu đề SNI.
Tôi đang sử dụng các máy chủ có trọng số 0 bởi vì, trong cấu hình hiện tại của tôi, tôi chỉ có một máy chủ chạy cho mỗi SNI và tôi không muốn chúng nhận được yêu cầu ngẫu nhiên. Bạn có thể tìm thấy những cách tốt hơn để chơi với điều này.
Tôi hi vọng cái này giúp được.