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

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

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

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

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

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

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

答案1

答案当然非常简单。ACL 需要正则匹配^$|^/$|^/articles|^/blogs

以下是我的配置:

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

相关内容