Web Server

Nginx에서 개별 서버마다 로그 설정하기

2024. 05. 24. by 박하람

Nginx는 기본적으로 전역 로그가 설정되어 있다. 그런데, 로그를 확인하러 들어가니 access와 error 파일이 무지하게 생성되어 있었다..🥲 설정하는 과정에서 관리가 잘 안된 모양인데, 이 김에 개별 서버마다 로그를 다르게 기록할 수 있도록 설정해봤다. 오늘 포스팅에서 nginx 로그 설정 방법은 이 블로그 글을 참고했다.

로그 보기

서버에 약간 문제가 있는 것 같아, 로그를 확인하려고 보니 아래와 같이 access.logerror.log가 많이 생성되어 있었다. 이 로그 파일 더미는 한번에 삭제했다.

nginx log

다음의 경로로 접속한 다음, access와 error로 시작하는 모든 파일을 삭제한다.

cd /var/log/nginx
find . -type f -name 'access*' -exec rm {} \;
find . -type f -name 'error*' -exec rm {} \;

개별 서버별 로그 생성하기

우선 전역적으로 설정한 access.logerror.log 설정을 주석처리한다. etc/nginx/nginx.conf 파일에서 다음의 코드를 주석처리한다.

# access_log /var/log/nginx/access.log;
# error_log /var/log/nginx/error.log;

다음은 서버 별로 폴더를 만들어 access.logerror.log를 다시 생성했다. 그 다음은 sites-available 폴더의 개별 서버 설정에서 다음과 같은 코드를 작성한다. access_logerror_log의 경로는 개별 파일이 있는 경로를 작성해주면 된다.

server {
    server_name test.domain.com www.test.domain.com;
    access_log /var/log/nginx/test.domain.com/access.log; # added
    error_log /var/log/nginx/test.domain.com/error.log; # added
}

다음은 nginx의 설정이 잘 반영되도록 nginx를 reload한다.

nginx -t
sudo service nginx reload

이후 해당 도메인에 다시 접속한 후에 cat /var/log/nginx/test.domain.com/access.log를 보면 로그 기록이 남는다.

Tags:
#nginx
#access.log
#error.log