[server] nginx : 모든 헤더와 함께 완전한 요청 / 응답을 기록합니까?

때때로 중단되는 응용 프로그램 서버가 있습니다. 클라이언트의 요청이 잘못되었다고 의심됩니다.

nginx가 전체 요청 / 응답 (피들러 캡처와 같은)을 파일에 기록 할 수 있습니까? 그래서 중단 전에 보낸 요청을 볼 수 있습니까?

(아마도 pcap과 그 접근 방식을 피하고 nginx에서 모두 수행해야합니다)

nginx가이 도구에 적합한 도구가 아닌 경우 네트워크 분석기 이외의 다른 도구는 무엇입니까?



답변

방문자가 요청 본문을 보내려면 client_body_in_file_only on;var $request_body_file를 로그 형식 에 추가하여 로그에 작성된 “임시”파일을 사용 하고 기록하십시오 . “임시”파일은 기본적으로 client_temp 디렉토리에 있습니다.

요청 헤더 $http_<header>도 기록하고로 헤더를 보냈습니다 $sent_http_<header>.

요청 본문과 헤더가있는 경우 요청 본문과 헤더를 재생하고 방문자의 응답을 얻을 수 있어야합니다.

또한 gor 와 같은 것을 고려해야합니다. 다른 환경에서 트래픽을 재생할 수 있으므로 프로덕션 환경에서 IO 문제를 일으키지 않고 nginx가 이러한 임시 파일을 작성할 수 있습니다 (nginx는 그 on값을 제거 하지 않습니다. 그 이유는 “임시”가 아닙니다. 이 경우).


답변

mitmproxy 는 원하는 것을 수행하는 데 적합한 도구 인 것 같습니다.

mitmproxy는 콘솔 인터페이스를 사용하는 HTTP 용 대화식 SSL 가능 man-in-the-middle 프록시입니다.

mitmdump는 mitmproxy의 명령 행 버전입니다. tcpdump를 HTTP로 생각하십시오.

풍모

  • HTTP 요청 및 응답을 가로 채고 즉시 수정하십시오.
  • 나중에 재생하고 분석 할 수 있도록 완전한 HTTP 대화를 저장하십시오.
  • HTTP 대화의 클라이언트 측을 재생하십시오. 이전에 기록 된 서버의 HTTP 응답을 재생합니다.
  • 트래픽을 지정된 서버로 전달하려면 프록시 모드를 반전시킵니다.
  • OSX 및 Linux의 투명 프록시 모드.
  • Python을 사용하여 HTTP 트래픽을 스크립트로 변경하십시오.
  • 차단을위한 SSL 인증서는 즉시 생성됩니다.

리버스 프록시 모드를 사용하면 Fiddler와 마찬가지로 요청 및 응답을 캡처 할 수 있습니다.


답변