HAproxy 域名到后端映射,用于基于路径(url)的路由

HAproxy 域名到后端映射,用于基于路径(url)的路由

HAProxy 是否支持基于路径的路由的域名到后端映射。

目前它支持 vhost 的地图:

frontend xyz
   <other_lines>
   use_backend backend1 if { hdr(Host) -i myapp.domain1.com }
   use_backend backend2 if { hdr(Host) -i myapp.domain2.com }

可以使用地图重写为:

frontend xyz
   <other_lines>
   use_backend %[req.hdr(host),lower,map_dom(/path/to/map,default)]

地图文件内容如下:

#domainname  backendname
myapp.domain1.com backend1
myapp.domain2.com backend2

但是如果路由基于路径,如下例所示:

frontend xyz
   acl host_server_myapp hdr(host) -i myapp.domain.com
   acl path_path1 path_beg /path1
   acl path_path2 path_beg /path2
   use_backend backend1 if host_server_myapp path_path1
   use_backend backend2 if host_server_myapp path_path2

是否可以为该用例进行映射?使用basehdr(host) 可能会提供完整路径,但由于是字符串比较,因此它不具备域的灵活性base。还有其他方法可以将其转换为 haproxy 映射吗?

相关内容