Haproxy

使用 HAProxy 記錄整個 POST 正文?

  • April 28, 2020

我正在嘗試追踪 javascript 客戶端與應用程序伺服器互動方式的一些問題,並希望查看來回傳遞的整個 http 有效負載(標頭、正文和所有內容)。

正好在應用伺服器前面已經有一個haproxy伺服器,所以我希望能夠使用haproxy來提供相關的日誌。顯然,這在生產中打開會很糟糕,但是我有整個環境的複製,在我進行此調試時可以隔離它。

有沒有辦法讓 haproxy 為發送到特定後端伺服器的 POST 請求記錄整個 http 有效負載?

Haproxy 沒有記錄 POST 內容或 HTTP 正文的功能。

請改用 Wireshark。

顯然,從 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
#   ...

引用自:https://serverfault.com/questions/524525