如何在通过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
换句话说,我希望而不是终止SSL。
我最初想用Nginx
来做这件事,但很明显,在读取主机详细信息时,它不能充当一个非终止点(尽管在以后的版本中可以使用ssl预读)。
发布于 2017-02-28 14:44:35
经过广泛的研究,无法找到一个合理的方法来完成这项任务。
最后,我使用nginx
来完成需求。
发布于 2022-10-12 06:18:56
在搜索完之后,找到并测试了这个方法,它就能工作了。我真的不明白为什么有必要检查-延迟,但它有效!!
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/
https://stackoverflow.com/questions/42364784
复制相似问题