如何在通过 SSL 的同时为多个域、多个后端设置 HAproxy?
图表中的示例以获得更好的解释:
backend_domain_a
domain-a.com-. .-> 123.123.123.123
| |
+-> haproxy -+
| | backend_domain_b
domain-b.com-' '-> 789.789.789.789
注意 每个后端服务器都会颁发自己的证书。因此需要 SSL 直通。
我有此配置,但由于多种原因无法使用(关键是缺少端口号):
frontend www
bind *:80
bind *:443
option tcplog
acl host_domain_a hdr(host) -i domain-a.com
acl host_domain_b hdr(host) -i domain-b.com
use_backend backend_domain_a if host_domain_a
use_backend backend_domain_b if host_domain_b
backend backend_domain_a
server web_a 123.123.123.123 check
backend backend_domain_b
server web_b 789.789.789.789 check
换句话说,我希望 Haxproxy 不终止 SSL。
我最初想用 Nginx
来做到这一点,但显然它不能在读取主机详细信息时充当非终止点(尽管在未来的版本中可能会使用 ssl preread)
最佳答案
谷歌搜索后,找到并测试了这个方法,它有效。我真的不明白为什么需要检查延迟,但它有效!!
frontend https_frontend
mode tcp
option tcplog
bind *:443
acl tls req.ssl_hello_type 1
tcp-request inspect-delay 5s
tcp-request content accept if tls
acl host_www req.ssl_sni -i example.com
acl host_www req.ssl_sni -i www.example.com
acl host_wiki req.ssl_sni -i wiki.example.com
use_backend https_www if host_www
use_backend https_wiki if host_wiki
backend https_www
mode tcp
option tcplog
option ssl-hello-chk
server www 192.168.1.10:443
全文在这里:https://az.id.au/ops/haproxy-http-and-https-multiple-domains-and-backends/
关于ssl - 如何使用 HAproxy 为多个域设置 SSL 直通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364784/