如何让 HAProxy 后端包含路径

Mic*_*ale 5 web-server haproxy

当使用 HAProxy 进行虚拟主机时,我可以看到如何从前端的 header 中使用 Host 来决定要路由到哪个后端。但是,是否可以使后端成为包含路径的 URL(与您在设置虚拟主机时使用 apache 或 nginx 所做的不同)。

http://www.techrawr.com/tag/haproxy/ - 显示了大部分内容。但是,如果后端在一台服务器上,而 backend1 和 backend2 作为服务器呢?

djs*_*dog 6

我认为您正在寻找这样的东西,以便根据 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
Run Code Online (Sandbox Code Playgroud)

来源:用于平衡 URL 请求的 Haproxy ACL