我需要一些有关 HaProxy 设置方面的帮助。
目前,我有以下配置:
frontend fe_main_http
bind :80
reqadd X-Forwarded-Proto:\ http
use_backend %[req.hdr(Host),lower]
frontend fe_main_https
bind 0.0.0.0:443 ssl crt /etc/haproxy/certs/ no-sslv3 no-tls-tickets
reqadd X-Forwarded-Proto:\ https
use_backend %[req.hdr(Host),lower]
backend test1.domain.com
redirect scheme https if !{ ssl_fc }
server s1 1.2.3.4:80 check
...
这意味着,任何域名都将被重定向到适当命名的后端。(例如:example.com
到backend example.com
)
问题是 - 我也希望为这些域的子域设置它。基本上来说,任何子域名基础域名(例如test.example.com
或*.example.com
)以及基础域名本身(例如example.com
)应该指向同一个后端(例如backend example.com
)。
我听说可以用正则表达式来实现;然而,我没有成功设置这个东西。:(
也许有人遇到过类似的问题并可以帮助我?
提前致谢!
答案1
您实际上并不需要正则表达式(记住它们很昂贵)但您确实需要指定域名。
考虑一下:
use_backend example.com if { req.hdr(host) -i example.com }
现在匹配所有子域名-m end
:
use_backend example.com if { req.hdr(host) -i -m end .example.com }