我试图使用HA Proxy转发到2个后端服务器,这2个后端服务器都用SSL监听。我不想终止HA Proxt上的SSL,但如果这是唯一的解决方案,我会终止。但从我所读到的内容来看,我所要求的并不是不可能的。为了路由到正确的服务器,我需要看到请求的目的地。根据我所读到的,ssl_fc_sni是解决这个问题的方法,因为SNI头可以在SSL连接中查看。所以,考虑到这一点,我有了这个。
# Default HTTP frontend
frontend http_frontend
bind 192.168.50.3:80
redirect scheme https code 301
# Default HTTPS frontend
frontend https_frontend
bind 192.168.50.3:443
mode tcp
option tcplog
use_backend web_server_1 if { ssl_fc_sni web_server_1.mydomain.com }
default_backend web_server_2
# web_server_1 backend
backend web_server_1
mode tcp
option ssl-hello-chk
server web_server_1 192.168.100.30:443
# Fallback backend
backend web_server_2
mode tcp
option ssl-hello-chk
server web_server_2 192.168.100.29:443
但这是行不通的 所有的请求都被路由到默认的后端(web_server_2),我不明白为什么。一定有一种方法可以通过headersSNI路由SSL请求。
谁能指出我遗漏了什么?
你将需要添加 tcp-request inspect-delay
# Default HTTPS frontend
frontend https_frontend
bind 192.168.50.3:443
mode tcp
option tcplog
tcp-request inspect-delay 5s
tcp-request content capture req.ssl_sni len 25
tcp-request content accept if { req.ssl_hello_type 1 }
use_backend web_server_1 if { req.ssl_sni web_server_1.mydomain.com }
default_backend web_server_2
文件 req.ssl_sni