小编aja*_*078的帖子

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 }
Run Code Online (Sandbox Code Playgroud)

可以使用地图重写为:

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

以地图文件的内容为:

#domainname  backendname
myapp.domain1.com backend1
myapp.domain2.com backend2
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

是否可以为此用例进行映射?使用base而不是hdr(host)可能会给出整个路径,但它不具有域的灵活性,因为它base是字符串比较.还有其他方法可以将其转换为haproxy地图.

haproxy

8
推荐指数
1
解决办法
6729
查看次数

在Lua中给定文件名的情况下,如何获得目录路径,这与平台无关

如果是file /etc/haproxy/haproxy.cfg,则输出应为目录名/etc/haproxy

目前我正在使用

file = "/etc/haproxy/haproxy.cfg"
sep = "/"
file:match("(.*"..sep..")")
Run Code Online (Sandbox Code Playgroud)

但是它不是平台无关的,并且在Windows上会失败,因为路径分隔符是不同的。那么,是否有使用lfs模块的平台不可知的方式来实现这一目标?

lua

4
推荐指数
1
解决办法
1316
查看次数

标签 统计

haproxy ×1

lua ×1