在 HAProxy 中使用正则表达式创建 ACL

在 HAProxy 中使用正则表达式创建 ACL

我想有条件地向与域及其子域匹配的请求添加标头。因此,我想匹配来自以下地址的请求:

http://example.com
https://example.com
http://foo.example.com
https://foo.example.com

但不是:

http://example.com.otherdomain.com

我的 haproxy 配置中有这些行。

frontend http
  capture request header origin len 128
  acl is_my_domain capture.req.hdr(0) /https?:\/\/(.*\.)?example.com/
  http-response add-header X-Your-Domain-IS %[capture.req.hdr(0)] if is_my_domain

我可以让捕获的数据在标头中回显,但条件不起作用。我该如何测试原始标头?

答案1

看起来您宁愿使用以下 acl,它看起来更具可读性:

acl is_my_domain hdr_end(host) -i example.com
http-response add-header X-Your-Domain-IS %[host] if is_my_domain

相关内容