如何用HAProxy将同域名不同路径转发至后端不同端口?
HAProxy路径转发规则修正方案
你的配置问题出在两个核心点:
path_beg语法误用:path_beg是匹配路径的起始前缀,不需要加*,添加后会把*当作路径的固定部分去匹配,直接导致规则失效。- 规则顺序逻辑错误:
/app1/app2/*同时满足/app1的前缀匹配,如果先判断is_test-app1,所有/app1/app2路径的请求会被优先匹配到server1:xxx,永远走不到server1:yyy的规则。
修正后的配置:
acl is_test-app hdr_end(host) -i testmysite.com acl is_test-app2 path_beg /app1/app2 acl is_test-app1 path_beg /app1 use_backend server1:yyy if is_test-app is_test-app2 use_backend server1:xxx if is_test-app is_test-app1
关键说明:
- 将更具体的路径规则(
/app1/app2)放在前面,确保精确匹配的请求优先命中对应后端。 path_beg只需填写路径前缀本身,HAProxy会自动匹配所有以此开头的路径(比如/app1/app2/xxx、/app1/app2/yyy/zzz等)。- 若需严格匹配
/app1/开头且排除/app1/app2的请求,也可使用path_reg做正则匹配,但上述顺序调整已能满足需求,且性能更优。
内容的提问来源于stack exchange,提问作者Ian Twy
相关产品推荐
相关产品推荐

