NGINX Plus Session Log 모듈을 통해 로깅 세션 구성

이번 포스트에서는 NGINX Plus session log 모듈을 통해 세션에 대한 로깅을 구성하는 방법에 대해 설명합니다. 세션 로깅을 활성화하는 이유는 여러가지가 있으며, 그중 몇 가지는 아래와 같습니다.

  • 사용자 행동 분석 – 세션 로깅을 통해 사용자의 웹사이트 내 행동을 추적할 수 있습니다. 어떤 페이지에서 얼마나 오랫동안 머물렀는지 등의 데이터를 수집하여 사용자 경험을 개선하는 데 활용할 수 있습니다.
  • 맞춤형 서비스 제공 – 세션 로깅을 통해 사용자의 선호도를 이해하고, 개인화된 콘텐츠나 추천 서비스를 제공할 수 있습니다. 이는 사용자 만족도를 높이고 재방문율을 증가시키는 데 도움을 줍니다.
  • 마케팅 전략 수집 – 사용자의 세션 데이터를 분석하여 효과적인 마케팅 전략을 수립할 수 있습니다.

세션 로깅은 웹사이트 운영에 필수적인 요소로, 사용자 경험을 향상시키고, 보안을 강화하며, 궁극적으로 비즈니스 목표 달성에 기여합니다.

목차

1. NGINX Plus Session Log 모듈이란?
2. NGINX Plus Session Log 구성 방법
3. Session Log 확인
4. 결론

1. NGINX Plus Session Log 모듈이란?

Session Log 모듈은 사업용 구독에서 제공하는 모듈입니다. 이 모듈은 개별 HTTP 요청 대신 로깅 세션(즉, 여러 HTTP 요청의 집계)을 활성화합니다.

기본적인 구성은 아래 예제와 같습니다.

    session_log_zone /path/to/log format=combined
                     zone=one:1m timeout=30s
                     md5=$binary_remote_addr$http_user_agent;

    location /media/ {
        session_log one;
    }
  • session_log_zone – 로그 파일에 대한 경로를 설정하고 현재 활성 세션을 저장하는 데 사용되는 공유 메모리 영역을 구성합니다.
  • session_log one – one이라는 이름의 session_log_zone을 사용합니다.

위와 같이 구성 시, 동작 원리는 다음과 같습니다.

세션은 세션의 마지막 요청이 지정된 시간 제한(기본 30초)을 초과하지 않는 한 활성 상태로 간주됩니다. 세션이 더 이상 활성 상태가 아니면 로그에 기록되는 형식입니다.

2. NGINX Plus Session Log 구성 방법

아래는 구성 예제입니다.

session_log_format session '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" '
                           'session_log_id=$session_log_id';

session_log_zone /var/log/nginx/session.log format=session
                     zone=one:1m timeout=30s
                     md5=$binary_remote_addr$http_user_agent;


upstream backend {
    server 192.168.201.80:8111;
}

server {
        listen 80;
        server_name example.com;

        session_log one;

        location / {
                proxy_pass http://backend;
        }
}

사용된 지시문의

  • session_log_format
    • session이라는 이름의 로그 포맷을 설정합니다.
  • session_log_zone
    • /var/log/nginx/session.log – 로그가 기록될 경로
    • format=session – 앞서 정의한 session_log_format에서 정의한 로그 형식을 사용
    • zone=one:1m – “one”이라는 이름의 공유 메모리 영역을 사용하며, 이 영역의 크기는 1MB로 설정합니다.
    • timeout=30s – 세션이 종료되기까지 대기하는 시간입니다. 세션이 종료되지 않으면 30초 동안만 기록을 기다리며, 30초 이후에 로그를 남기고 세션을 종료하는 것으로 처리합니다.
    • md5=$binary_remote_addr$http_user_agent – 세션을 구분하기 위한 고유 ID 생성 방식입니다. 클라이언트 IP와 User-Agent를 MD5 해시로 조합하여 고유한 세션 ID를 생성합니다.
  • session_log
    • one – 앞서 session_log_zone에서 정의한 “one” 영역을 사용하여 세션 로그를 기록합니다.

3. Session Log 확인

session_log_zone에서 지정한 로그를 확인합니다.

# tail -f /var/log/nginx/session.log

xxx.xxx.233.10 - - [25/Oct/2024:15:06:53 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Whale/3.28.266.14 Safari/537.36" session_log_id=95872fe7add37004dd54ccaae43b5c6f

example.com에 접속하면 timeout이 30s로 설정되었기 때문에, 세션을 종료하지 않으면 30초 이후 세션 종료 처리하여 로그에 기록되게 됩니다.

4. 결론

NGINX Plus의 Session Log 모듈은 웹 애플리케이션의 세션 데이터를 효과적으로 기록하고 분석할 수 있는 강력한 도구입니다. 이를 통해 사용자 행동을 이해하고, 성능을 최적화하며, 문제를 신속하게 해결할 수 있습니다. 세션 로깅의 구성은 간단하면서도 유연성이 뛰어나, 다양한 비즈니스 요구에 맞게 조정할 수 있습니다.

이번 포스트에서 다룬 내용을 바탕으로 NGINX Plus의 Session Log 모듈을 활용하여 귀하의 웹 애플리케이션에 대한 통찰력을 향상시키고, 사용자 경험을 개선하는 데 기여하시기를 바랍니다. NGINX Plus의 다양한 기능을 적극적으로 활용하여 더 나은 웹 환경을 구축해 보세요.

해당 모듈을 직접 사용해 보시려면 NGINX Plus 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required