nginx POST data 로깅 남기기
nginx 의 기본 로깅은 용량 문제로 POST 로 전달된 데이타를 남기지 않습니다.
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
아래와 같이 post_logs 라는 log format 을 만들어 주고 여기에 $request_body 변수를 추가하면 POST data 도 로그 파일에 남게 됩니다.
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; log_format post_logs'$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '"[$request_body]"';
로그 포맷 생성이 끝났으면 가상 호스트의 access_log 항목에 다음과 같이 설정해 줍니다.
#access_log /var/log/nginx/my-server-access.log combined; access_log /var/log/nginx/my-server-access.log post_logs;
설정이 끝났으면 nginx 를 재시작하면 반영되고 POST 로 전달된 데이타도 로그 파일에 남게 됩니다.
systemctl restart nginx
POST 데이타를 남기면 로그 파일 용량이 급증하므로 개발이나 테스트 목적을 달성하면 바로 예전 로그 포맷으로 롤백해야 합니다.