使用HAProxy记录整个POST正文?


12

我正在尝试查找javascript客户端与应用程序服务器进行交互的方式的一些问题,并希望查看来回传递的整个http有效负载(标头,正文和所有内容)。

碰巧的是,在应用程序服务器之前已经有一个haproxy服务器,因此我希望能够使用haproxy提供相关的日志。显然,这在生产环境中很难打开,但是我有一个完整的环境克隆,可以在进行调试时将其隔离。

有没有办法让haproxy记录整个HTTP有效负载,以记录去往特定后端服务器的POST请求?

Answers:


3

Haproxy没有设施来记录POST内容或HTTP正文。

请改用Wireshark。


谢谢。我最终能够在chrome的开发人员工具中看到POST。
彼得·格罗夫斯

这已不再是这种情况。请参阅下面的hack_on的帖子。
PMV '18年

18

显然,自1.6.0版(2015年10月)起,您现在可以使用。有一个新指令:

option http-buffer-request

您包含在前端或后端中以使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
#   ...

嗨,有没有办法将此req.body记录到其他文件中,而不是使用相同的默认haproxy.log?
Shoaib Khan

你好 如何在一个日志文件中记录请求和响应正文?
Yuriy Tigiev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.