我需要使用path_beg
但似乎不起作用,我的conf文件是:
global
log 127.0.0.1 local0
maxconn 4096
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
timeout connect 600000
timeout client 600000
timeout server 600000
frontend http-in
bind *:80
acl foo hdr(host) -i www.example.com
acl bar path_beg /bar
use_backend foo-cluster if foo
use_backend bar-cluster if bar
backend foo-cluster
balance roundrobin
option http-server-close
option forwardfor
http-request set-header X-Client-IP %[src]
server foo 172.51.0.201:80
backend bar-cluster
balance roundrobin
option http-server-close
option forwardfor
http-request set-header X-Client-IP %[src]
server bar 172.51.0.202:80
后端foo-cluster
工作,如果我转到http://www.example.com/bar
我找不到foo-cluster
中的404,有什么想法吗? (使用haproxy 1.7.7)
答案 0 :(得分:2)
对于“http://www.example.com/bar”网址,foo和bar ACL均为True
由于首先评估“use_backend foo_cluster”,因此即使条形码ACL为True,您的请求也将路由到该后端。
因此,您需要重新排序“use_backend”规则,或者在ACL定义中更具体。