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 데이타를 남기면 로그 파일 용량이 급증하므로 개발이나 테스트 목적을 달성하면 바로 예전 로그 포맷으로 롤백해야 합니다.



Ref





blog comments powered by Disqus