嗨,我正在尝试使用haproxy中的acl将侦听同一端口的不同域名路由到不同的后端。当其中一个域名有两个子域时,我怎么会有问题。所以我的前端配置如下所示
bind *:80
mode http
acl is_kibana_prod hdr_dom(host) -i kibana.domain.com
acl is_kibana_nprod hdr_dom(host) -i non-prod.kibana.domain.com
use_backend backend_kibana_prod if is_kibana_prod
use_backend backend_kibana_nprod if is_kibana_nprod
default_backend backend_default当我向bar.com发出请求时,请求将发送到backend_foo。有人能在这方面帮我吗?
实际日志:
172.17.0.1:54982 [21/May/2020:03:50:08.978] http backend_kibana_prod/kibanaprod 0/0/2/9/11 302 279 - - ---- 1/1/0/0/0 0/0 {non-prod.kibana.domain.com} "GET / HTTP/1.1"
172.17.0.1:54982 [21/May/2020:03:50:08.989] http backend_kibana_prod/kibanaprod 0/0/0/32/37 200 85130 - - ---- 1/1/0/0/0 0/0 {non-prod.kibana.domain.com} "GET /login?next=%2F HTTP/1.1"发布于 2020-05-21 11:32:10
您的配置在HAProxy 2.0中适用于我。下面您可以看到,我正在请求日志中捕获客户端发送的host头,并将其发送到每个主机的相应后端。
192.168.1.20:49506 [20/May/2020:23:29:33.869] fe_main backend_bar/s1 0/0/0/2/2 200 799 - - ---- 1/1/0/0/0 0/0 {bar.bar.bar.com} "GET / HTTP/1.1"
192.168.1.20:49508 [20/May/2020:23:29:35.799] fe_main backend_foo/s1 0/0/1/6/8 200 2080 - - ---- 1/1/0/0/0 0/0 {foo.foo.com} "GET / HTTP/1.1" bind *:80
mode http
http-request capture hdr(Host) len 32
acl is_foo hdr_dom(host) -i foo.foo.com
acl is_bar hdr_dom(host) -i bar.bar.com
use_backend backend_foo if is_foo
use_backend backend_bar if is_bar
default_backend backend_default
backend backend_foo
server s1 192.168.1.71:80
backend backend_bar
server s1 192.168.1.122:80发布于 2020-05-21 13:53:15
原来我需要使用hdr(主机)而不是hdr_dom(主机)。
https://stackoverflow.com/questions/61926442
复制相似问题