我正在使用haproxy来为单个服务器上运行的多个应用程序路由。对于正在使用的域之一,应将几十个子域定向到一些应用程序之一。
目前,我在separte行中列出了所有这些子域。我的前端配置如下所示:
frontend http-in
bind *:80
acl alpha hdr(host) -i alpha.com
acl beta hdr(host) -i beta.com
acl gamma00 hdr(host) -i apple.gamma.com
acl gamma01 hdr(host) -i banana.gamma.com
acl gamma02 hdr(host) -i cherry.gamma.com
acl gamma03 hdr(host) -i durian.gamma.com
acl gamma04 hdr(host) -i elderberry.gamma.com
acl gamma05 hdr(host) -i fig.gamma.com
acl gamma06 hdr(host) -i grapefruit.gamma.com
acl gamma hdr(host) -i gamma.com
use_backend a if alpha
use_backend b if beta
use_backend sub1 if gamma00
use_backend sub1 if gamma01
use_backend sub1 if gamma02
use_backend sub2 if gamma03
use_backend sub2 if gamma04
use_backend sub2 if gamma05
use_backend sub2 if gamma06
use_backend g if gamma
default_backend default
有没有办法以更简洁的形式获得相似的结果?这样的列表有效吗?还是在某个时候改用正则表达式会更好?
regex
我相信您的问题包含关键字,实际上它就是您的答案。另请注意,您可以使用hdr_beg
代替,hdr
以便仅枚举子域。最后,只需在ACL行中使用相同的ACL ,就可以将其gamma00-06
ACL 折叠为两个ACL,一个用于sub1
,另一个用于。sub2
acl <title>