在 K8S 上运行的 HAProxy 实例上,我需要在 HAProxy 上手动阻止某些 IP 地址。目前我已经无法记录它们。根据 AWS 文档,负载均衡器设置X-Forwarded-For
请求标头并填写客户端 IP 地址。
当尝试记录此标头(以及客户端 IP)时,使用 HAProxy 版本 2.0.18 和 2.2.20 时,我总是得到空字符串。所以我猜,我错误配置了 HAProxy。我的配置如下:
global
daemon
maxconn 256
log stdout format raw local0
defaults
mode http
option httplog
option dontlognull
timeout connect 15000ms
timeout client 150000ms
timeout server 150000ms
userlist global_auth
user someuser insecure-password somepass
frontend http-in
bind *:80
bind *:443 ssl crt /etc/certs/myapp-de.pem/cert_bundle_key.pem alpn h2,http/1.1
option httplog
option dontlognull
capture request header X-Forwarded-For len 500
capture request header x-forwarded-for len 500
log-format "Headers = --%hr--, --%hrl-- | Headers2: --%[capture.req.hdr(0)]--, --%[capture.req.hdr(1)]--"
log global
acl host_ssl_exception hdr(host) -i jobs.myapp.com
redirect scheme https code 301 if !{ ssl_fc } !host_ssl_exception
acl is_post method POST|OPTIONS
acl is_get method GET
default_backend myapp-web
backend myapp-web
mode http
compression algo gzip
compression type text/html text/plain text/css application/javascript application/json
server web1 myapp-web.myapp-${TRACK}.svc.cluster.local:80 maxconn 32 cookie check
除一个后端外,其他所有后端均已删除。已启用 HTTPS 和 HTTP2。似乎capture
失败了,但目前我不明白为什么。
答案1
添加发送代理你的服务器配置行后端 myapp-web配置以便接收客户端的正确IP。