Haproxy hdr_ip acl 不受 reqidel 影响吗?

Haproxy hdr_ip acl 不受 reqidel 影响吗?

我有一台位于负载均衡器后面的服务器,但暂时也可以直接访问。

我有一个应该可以访问它的 IP 地址白名单。

鉴于以下配置:

frontend http
  bind 0.0.0.0:80

  acl from_internal src 10.0.0.0/8
  reqidel ^X-Cluster-Client-Ip unless from_internal

  acl ip_allow src -f /etc/haproxy/allow.txt
  acl lb_allow hdr_ip(X-Cluster-Client-Ip) -f /etc/haproxy/allow.txt

  http-request allow if ip_allow
  http-request allow if lb_allow
  http-request deny

我想允许来自特定 IP 的直接请求 ( ip_allow)。我想允许负载均衡器已X-Cluster-Client-Ip为其设置的请求 ( lb_allow)。

但是,我只想信任来自负载均衡器的标头(10.0.0.0/8)。在所有其他情况下,我只想删除它。

似乎应用 ACL 时不会删除标头 - 如果我将其设置X-Cluster-Client-Ip为受信任的 IP 并直接连接到服务器,那么我就能通过。有办法解决这个问题吗?

答案1

是的,您不能依赖标头操作来影响 ACL - 它们在混乱之后不会按顺序应用。

在这种情况下,您可以轻松修改逻辑

http-request allow if ip_allow
http-request allow if lb_allow from_internal
http-request deny

相关内容