我正在尝试在 HAProxy 中设置和记录自定义标头以获取数据,以便我可以设置我们的 DDoS/Anti Abuse 配置。
我遇到的问题是,我可以设置标头,并且可以捕获 HAProxy 未设置的标头(例如:Accept-Language),但我无法捕获/记录我设置的标头。它们只是在日志中显示为空白。下面的配置我尽可能简化了所有内容,但它仍然不会记录自定义标头。
我把所有这些都放在一个前端。
frontend WEBSERVER
bind 111.222.333.444:80
option forwardfor
option httplog
.......
http-request add-header X-IP %ci
http-request add-header X-Custom-Header pizza
capture request header X-IP len 64
capture request header X-Custom-Header len 5
capture request header Accept-Language len 64
default_backend WEB-FARM
我的日志最终看起来像这样:
10.0.0.1:62291 [20/Oct/2015:12:52:26.112] WEBSERVER WEB_FARM/WEB-1 5/0/49/50/315 200 16875 - - ---- 1/1/0/0/0 0/0 {||en-US,en;q=0.8} "GET /media/title.png HTTP/1.1"
答案1
你没有说明你使用的是哪个版本的 HAProxy,但在 1.6.x 中,http 请求关键字现在有一个capture
可以为您解决问题的参数。
它的使用方法与以下方法完全相同capture request header
:
frontend WEBSERVER
bind 111.222.333.444:80
option forwardfor
option httplog
.......
http-request add-header X-IP %ci
http-request add-header X-Custom-Header pizza
http-request capture hdr(X-IP) len 64
http-request capture hdr(X-Custom-Header) len 5
capture request header Accept-Language len 64
default_backend WEB-FARM