Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

올빼미공방

Nginx로 Unique User 탐지하기 본문

개발/Nginx

Nginx로 Unique User 탐지하기

운좋은올빼미 2019. 8. 22. 17:31

Nginx로 Unique User 탐지하기

1. 개요

Nginx access log를 사용자 분석에 활용하기 위해서는, Nginx에서 제공하는 Default access log만으로는 부족합니다.

유저를 특정할 수 있는 정보가 부족하기 때문입니다. 이에 Log파일에 Userid 등 사용자 분석 기능에 활용할 수 있는 정보를 삽입하는 것이 필요합니다.

Nginx의 userid 모듈과 cookie를 활용하여, Unique User을 탐지하고 이 정보를 access log상에 남겨 봅시다.

2.  userid module 활용하기

userid module은 client 탐지를 위하여, client의 브라우저에 쿠키를 삽입합니다.

nginx configuration file을 수정하는 것만으로도, 간단히 적용할 수 있습니다.

아래는 userid module 공식 문서에 나와있는 예제입니다.

  1. userid on;
  2. userid_name uid;
  3. userid_domain example.com;
  4. userid_path /;
  5. userid_expires 365d;
  6. userid_p3p 'policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"';

userid directive는 Cookie의 설정 여부와 logging 여부를 나타냅니다. 

userid_name은 cookie의 이름을 설정합니다.

userid_domain은 cookie가 설정되는 domain을 의미하는데, domain이 있는 웹 사이트의 경우 domain name을, 그렇지 않은 경우에는 ip주소를 기입해주시면 됩니다.

userid_path또한 cookie가 설정되는 path를 의미하며 default는 '/'입니다.

userid_expires는 브라우저가 쿠키를 유지하는 기간을 의미합니다.

userid_p3p는 쿠키와 함께 보내질 P3P 헤더의 값을 의미합니다.

 

유저가 우리의 웹 서비스에 처음 접근하는 경우 쿠키가 삽입되며, 삽입된 쿠키 정보는 $uid_got 이라는 변수를 통해 확인할 수 있습니다.

uid=EDF316A5B6AD3F5D892C082502030303 

위와 같은 형식으로 저장이 됩니다. 이를 통해 유저를 특정할 수 있습니다.

 

3. Cookie 활용하기

이제 유저를 특정할 수 있게 되었습니다. 그렇지만 이것만으로는 조금 부족한 느낌이 듭니다.

유저가 처음 사이트를 방문한 시점을 알 수 있다면, 시간에 따라 유저를 분류할 수 있고 이는 유저 분석에 도움이 됩니다.

따라서, 유저의 브라우저에 유저가 처음 사이트를 방문한 시점을 저장하도록 합시다.

  1. location ~ / {
  2. set $visited $cookie_firstvisit;
  3. if ($visited = "") {
  4. add_header Set-Cookie "firstvisit=$time_local";
  5. }
  6. }

위의 예시 코드는 유저가 사이트에 처음 방문하는 경우, 유저의 브라우저에 처음 방문한 시간을 "firstvisit"이라는 cookie에 저장하는 기능을 합니다.

코드를 분석하기에 앞서, 쿠키를 생성하고 값을 참조하는 법에 대하여 알아보겠습니다.

쿠키 생성: add_header Set-Cookie "name=value";

name에는 쿠키의 이름, value에는 그 쿠키에 저장할 값을 넣어줍니다.

쿠키 참조: $cookie_name

name에는 참조할 쿠키의 이름을 기입해줍니다.

다시 위의 코드로 돌아가 봅시다.

set $visited $cookie_firstvisit;

위의 코드는, "firstvisit"이라는 쿠키의 값을 visited라는 변수의 값으로 설정합니다. 따라서 쿠키가 존재하지 않는 경우, if문이 실행되어 쿠키가 생성되고 그 값은 최초 방문한 시간과 같게 되는 것입니다.

이처럼 userid와 cookie를 활용하면, 사용자 분석에 필요한 정보들을 획득할 수 있을 뿐만 아니라, 브라우저를 통해 사이트에 접근하지 않는 access의 경우에는 userid가 생성되지 않기 때문에, 실제로 브라우저를 통해 사이트에 접근하는 "실제 유저"만을 대상으로 사용자 분석을 진행할 수 있습니다.

 

Comments