我有一个位于负载均衡器后面的服务器,但暂时也可以直接访问。
我有一个应该能够访问它的IP地址的白名单。
给定以下configuration:
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 )的直接请求。 我想允许负载平衡器为( lb_allow )设置X-Cluster-Client-Ip的lb_allow 。
但是,我只想从负载平衡器( 10.0.0.0/8 )中信任这个头文件。 在所有其他情况下,我只是想删除它。
看起来应用ACL时头不会被删除 – 如果我将X-Cluster-Client-Ip设置为可信IP并直接连接到服务器,那么我就可以通过。 有没有解决的办法?
是的,你不能依靠头部处理来影响ACL,它们不是在整理后按顺序应用的。
在你的情况下,你可以很容易地修改逻辑
http-request allow if ip_allow http-request allow if lb_allow from_internal http-request deny