使用 HAProxy,只在 ACL 中匹配根 URL

mic*_*d82 7 load-balancing haproxy

使用 HAProxy,我想创建以下设置:

  • 除 root (/)、/articles 和 /blogs 之外的所有请求都转到 server1
  • 所有对 root (/)、/articles 和 /blogs 的请求都转到 server2

我无法弄清楚如何在不依赖于设置默认服务器的情况下匹配 root,然后否定所有请求转到 server1 规则。

如何使用 HAProxy 表达上述内容?

正则表达式可能是解决此问题的方法,但我对正则表达式并不擅长,因此很难提出基于它的解决方案。

mic*_*d82 7

当然,这个问题的答案非常简单。正则表达式匹配所需的 ACL^$|^/$|^/articles|^/blogs

以下是我的conf:

global
  pidfile  /var/run/haproxy.pid
  quiet
  daemon

defaults
  mode  http
  option  httplog
  option  dontlognull
  option http-server-close
  retries 1
  maxconn 1024
  contimeout  15000
  clitimeout  60050
  srvtimeout    1200000

frontend www
  bind :80

  acl is_for_server2 path_reg ^$|^/$|^/articles|^/blogs

  use_backend server2 if is_for_server2

  default_backend server1

backend server1
  option forwardfor
  server server1 10.0.8.1 maxconn 1500

backend server2
  option forwardfor
  server server2 10.0.8.2 maxconn 1500
Run Code Online (Sandbox Code Playgroud)