当使用HAProxy进行虚拟主机时,我可以看到如何使用前端头的主机来决定后端路由到什么地方。 但是,是否有可能使后端成为一个包含path的URL(与设置虚拟主机时使用apache或nginx做的不同)。
http://www.techrawr.com/tag/haproxy/ – 显示大部分。 但是如果后端是在一台服务器上,但后端1和后端2是服务器呢?
HAProxy中的“server”指令支持许多参数,最接近你要求的是“redir”参数。 您可以使用它将HTTP 302redirect发送回客户端。
例:
backend www_example_com
balance roundrobin
server Backend1 10.0.0.1:80 redir http:// www.example.com/backend1
server Backend2 10.0.0.1:80 redir http:// www.example.com/backend2
我想你正在寻找这样的东西,以平衡不同的服务器基于url:
frontend http-farm bind 0.0.0.0:80 acl app1web hdr_beg(host) -i app1 # for http://app1.domain.com acl app2web hdr_beg(host) -i app2 # for http://app2.domain.com acl msg-url-1 url_reg ^\/path/games/.* acl msg-url-2 url_reg ^\/path/photos/.* acl msg-url-3 url_reg ^\/path/mail/.* acl msg-url-4 url_reg ^\/path/wazap/.* use_backend games if msg-url-1 app1web use_backend photos if msg-url-2 app2web use_backend mail if ..... backend games option httpchk GET /alive.php HTTP/1.1\r\nHost:\ app1.domain.com option forwardfor balance roundrobin server appsrv-1 192.168.1.10:80 check inter 2000 fall 3 server appsrv-2 192.168.1.11:80 check inter 2000 fall 3 backend photos option httpchk GET /alive.php HTTP/1.1\r\nHost:\ app2.domain.com option forwardfor balance roundrobin server appsrv-1 192.168.1.13:80 check inter 2000 fall 3 server appsrv-2 192.168.1.14:80 check inter 2000 fall 3
来源: Haproxy访问控制列表,以获得URL请求的平衡