HAProxy를 사용하여 전체 POST 본문을 로깅 하시겠습니까? 응용 프로그램 서버와 상호 작용하는 방식에

자바 스크립트 클라이언트가 응용 프로그램 서버와 상호 작용하는 방식에 대한 몇 가지 문제를 추적하려고하며 http 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
#   ...


답변