如何根据URL子字符串发出haproxy路由请求?


13

负载平衡器设置有两个后端。

请求URI如下所示:

http://example.com/answers/submit
http://example.com/tag-02/answers/submit

如何根据请求URI的格式配置haproxy,以将请求发送到两个后端中的一个或另一个?请求之间的唯一区别在于/tag-02/请求URI。

由于我是haproxy的新手,因此非常感谢有一个解释的haproxy配置文件。

Answers:


13

您要使用ACL

backend be1 # this is your default backend
  ...
backend be2 # this is for /tag-02 requests
  ...

frontend fe
  ...
  default_backend be1
  acl url_tag02 path_beg /tag-02
  use_backend be2 if url_tag02

HAProxy配置指南的第7节详细介绍了ACL,但是您必须了解use_backend该指南第4节中隐藏的魔咒,才能知道如何使用ACL。


1
尽管声明的ACL样式通常更具可读性和可重用性,但是您可以根据需要在use_backend指令本身中包含ACL声明use_backend be2 if { path_beg /tag-02 }
womble

0

为了给上面的答案提供更好的示例,下面是一个配置示例。

frontend https-in
   bind *:443 ssl crt /etc/ssl/server.pem
   mode http
   redirect scheme https if !{ ssl_fc }

   acl uri_help path_beg /help
   use_backend help if uri_help

backend help
    balance     roundrobin
    server      help yourbackendserver.com check
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.