我想将 100 多个网站从一台服务器迁移到另一台服务器。目前的计划是逐步为每个网站添加一个 acl,以便将流量引导到新服务器。
这是一个简化的例子
front http_frontend
bind *:80
acl is_new hdr_end(host) -i sub1.domain.com
acl is_new hdr_end(host) -i sub2.domain.com
acl is_new hdr_end(host) -i www.domain2.com
mode http
# etc
use_backend web1 if is_new
default_backend legacy1
一旦它们全部移动,我们就会改变default_backend
有没有办法从另一个文件读取这些 acl?或者从文件读取域 - 也许像这样?
acl is_new hdr_end(host) -i /path/to/file
例如,我包含如下所示的所有安全证书,这样的内容就很棒了!
bind *:443 ssl crt /etc/haproxy/certs.d
如果没有的话,那也不是世界末日,只是会很整洁:)。
答案1
haproxy 中的 ACL 可以接受-f
参数从文件中加载值。您可以在此处阅读文档。
例如:
acl valid-ua hdr(user-agent) -f exact-ua.lst -i -f generic-ua.lst test
“-f”标志后面是文件的名称,该文件中的所有行都将作为单独的值读取。如果要从多个文件加载模式,甚至可以传递多个“-f”参数。空行以及以尖锐符号(“#”)开头的行将被忽略。