使用 HAProxy 记录整个 POST 正文?

Pet*_*ves 13 haproxy

我正在尝试追踪 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)


lon*_*eck 4

Haproxy 没有记录 POST 内容或 HTTP 主体的功能。

请改用 Wireshark。