所以我们有一个带有 NLB 的 AWS 设置,以便我们可以将它附加到 EIP,从而为客户白名单提供静态。 NLB 将代理协议 v2 标头发送到 haproxy,后者将其发送回后端服务器。 该应用程序正在选择并使用它。 我想弄清楚的问题是,由于 haproxy 获取 NLB 的内部 IP,并且它仅通过 PROXY 协议标头获取公共客户端 IP,
如何从 PROXY 标头解析客户端 IP 并根据 haproxy 中的白名单 ACL 对其进行过滤?
我有一个这样的监听配置
listen backoffice
bind 10.2.3.4:443 accept-proxy
mode tcp
default-server inter 3s fall 3 rise 3 error-limit 1 on-error mark-down
option tcplog
acl network_allowed src 5.6.7.8 1.4.6.8 4.6.7.8
tcp-request connection reject if !network_allowed
server backoffice.prod.local 10.1.2.3:443 check-send-proxy send-proxy-v2-ssl-cn port 443
这个 ^^ 打破了这个后端的 haproxy - 只有当我评论 tcp-request 行并重新加载时它才有效
对我来说,这看起来是非常有用的用例,但到目前为止,还没有在线研究显示任何有希望的 haproxy 配置可以做到这一点。
我只有不到 2 天的时间来解决这个问题,希望社区能在短时间内伸出援手
答案 0 :(得分:0)
所以我最终弄清楚了我的情况:)
工作配置是这样的:
listen backoffice
bind 10.2.3.4:443 accept-proxy
mode tcp
default-server inter 3s fall 3 rise 3 error-limit 1 on-error mark-down
option tcplog
acl network_allowed src 5.6.7.8 1.4.6.8 4.6.7.8
tcp-request content reject if !network_allowed
server backoffice.prod.local 10.1.2.3:443 check port 443
我删除了将代理标头传递给后端的部分,因为它不需要它们。 我只需要让 NLB 将代理标头传递给 haproxy,以便我们可以可靠地过滤源/客户端 IP