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

Aut*_*act 17 haproxy

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

请求 URI 将如下所示:

http://example.com/answers/submit
http://example.com/tag-02/answers/submit
Run Code Online (Sandbox Code Playgroud)

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

对此有一些解释的 haproxy 配置文件将不胜感激,因为我是 haproxy 的新手。

nat*_*ado 17

您想使用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
Run Code Online (Sandbox Code Playgroud)

HAProxy 配置指南的第 7 节有关于 ACL 的详细信息,但您必须了解use_backend隐藏在指南第 4 节中的魔法咒语才能知道如何处理 ACL。

  • 虽然声明的 ACL 样式通常更具可读性和可重用性,但如果您愿意,您可以将 ACL 声明包含在 `use_backend` 指令本身中,使用 `use_backend be2 if { path_beg /tag-02 }`。 (2认同)