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