我正在尝试追踪 javascript 客户端与应用程序服务器交互方式的一些问题,并希望查看来回传递的整个 http 有效负载(标头、正文和所有内容)。
碰巧应用服务器前面已经有haproxy服务器了,所以我希望能够使用haproxy提供相关的日志。显然,在生产中打开这会很糟糕,但我有整个环境的克隆,可以在我进行调试时隔离。
有没有办法让 haproxy 记录发送到特定后端服务器的 POST 请求的整个 http 负载?
hac*_*_on 25
显然,从 1.6.0 版(2015 年 10 月)开始,您现在可以了。有一个新指令:
option http-buffer-request
Run Code Online (Sandbox Code Playgroud)
您将其包含在前端或后端中以授予 HAProxy 访问正文的权限。你使用 req.body 来访问它。这是我使用的配置的摘要:
global
log 127.0.0.1 local0
debug
maxconn 2048
ulimit-n 8012
# ...
defaults
mode http
option httplog
log-format frontend:%f/%H/%fi:%fp\ GMT:%T\ body:%[capture.req.hdr(0)]\ request:%r
option dontlognull
# ...
frontend www-http
log global
option http-buffer-request
# id=0 to store body for logging
declare capture request len 40000
bind 7.7.7.7:8007
http-request capture req.body id 0
default_backend www-backend
backend www-backend
mode http
option forwardfor
# ...
Run Code Online (Sandbox Code Playgroud)