[나희찬]님이 남기신 글:
>안녕하세요..^^
>
>-- 산이님의 답변에 이해가 안되는부분이 있어서여..!!
>
>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
>
>내용이 있는지 확인해 보세요
>없다면 위와 같이 추가합니다.
>중요한점은 %{Referer} 이 있어야합니다.
>
>그리고
>다음의 한줄도 추가합니다.
>
>SetEnvIfNoCase Referer \.A_systemp\.com myreferer
>
>\".A_systemp\.com
>
>부분을 A 시스템의 도메인으로 설정합니다.
>점(.) 앞에는 \를 추가해야합니다.
>
>그다음 B 시스템의 가상호스트 섹션이나 적용 가상호스트에
>다음과 같이 로그를 저장하도록 합니다.
>
>CustomLog /usr/local/apache/logs/myrefer_log combined env=myrefer
>
>
>위의 내용에 관한 질문---------------------------------------------
>
>
>위의 부분에서 env=myrefer 로 지정된 \".A_systemp\.com 로부터의 접속만 myrefer_log에 쌓이게 하는설정이지여..?
>
>그런데
>\".A_systemp\.com
>부분을 A 시스템의 도메인으로 설정합니다.
>
>--위의 부분이 이해가 안됩니다..^^;; 그리고 아래와 연관이 있겠네요..
>
>SetEnvIfNoCase 의 지시자가는 하는 역할을 하고 싶습니다..!!
>
>SetEnvIfNoCase Referer \.A_systemp\.com myreferer
>==> 의 해석이 정확히 어케 되는지여..?
>이해가 될것도 같은데....헷갈리네요..^^;;
>
>
>----------------------------------------------------------------
>
>
>
>제가 하고 싶은내용은
>
>1. B system에 access_log는 쌓여야합니다(A system에서의 접속 + B system으로의 다이렉트접속)
> B system에 A system으로 들어오는 referer_log는 따로 분리해서 쌓여야합니다.
> 이부분은 되긴 되었습니다..!!
> 제가 설정한내용은 아래와같습니다..
>
>httpd.conf 내용------------
>
>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
>LogFormat "%h %l %u %t \"%r\" %>s %b" common
>LogFormat "%{Referer}i -> %h %l %u %t \"%r\" %>s %b" referer
>#LogFormat "%{Referer}i -> %U" referer
>LogFormat "%{User-agent}i" agent
>
>CustomLog /usr/local/apache/logs/referer_log referer
>CustomLog /usr/local/apache/logs/agent_log agent
>
>대략 위와같은 설정으로 A system의 베너를 통한 접속은 되었습니다..다만 해당 A system의 베너를 통한 접속뿐만이 아니라..
>다른 접속도 referer_log에 쌓입니다..!! Setenv환경변수를 사용해야 A system의 베너를 통한 접속로그만 따로 뽑을것같은데..
>Setenv환경변수의 내용을 이해를 못하겠습니다..^^;; 위에 제가 이해하지 못한부분을 적어보았습니다..
>
>-------------------------
>
>2. 만약 웹호스팅서비스를 한다고 할때
> VirtualHost지시자에다가 logfile을 따로 지정을 해서 webalizer를 사용하여 username_log를 각각이 따로 분석을 하고 싶습니다.
>
>3. VirtualHost를 사용을 할때도 referer_log를 사용을 해서 1번과 똑같은 상황을 처리해야한다고 할때
> VirtualHost지시자에 어떻게 설정을 해야하는지요..?
>
>4. 위의 내용이 모두 가능할꺼 같은데...산이님의 "특이한 녀석들은 따로 담거나 없애기" 와 제 나름대로 책을 본결과로...^^;;
> 가정으로 위의 내용이 모두 실행이 되었을때 webalizer를 실행하는데에 문제가 한가지 있습니다..
> webalizer를 cron으로 돌려서 사용을 하면 되겠지만...
> webalizer를 webhosting하는 모든 계정(만약 10개의 계정에 로그분석을 따로 해야한다면...)에
> 아래의 내용 (/etc/webalizer.conf) 을 따로 따로 실행을 해야하는데 말이죠..^^;;
>
> ---- 아래 ----
> LogFile /usr/local/apache/logs/referer_log
>
> OutputDir /usr/local/apache/htdocs/referer/
>
>
> 위의 내용을 10개를 써주어야하는지(계정수 만큼)...10개를 써주어도 실행은 하나만 되니까...(되긴되는데 실행이 하나밖에 안되더라구여..)
> 어떻게 자동으로 10개의 LogFile지시자에 나와있는내용을 한번에 실행할수 있는 방법이 있습니까..?
>
>
>
>-- VirtualHost 설정 -- 을 함 적어보겠습니다..-------------------------
>
>
><VirtualHost 192.168.0.12>
> ServerAdmin hcna@aaaaa.com
> DocumentRoot /usr/local/apache/htdocs
> ServerName aaaaa.com
> ErrorLog logs/error_log
> CustomLog logs/access_log common
></VirtualHost>
>
><VirtualHost 192.168.0.12>
> ServerAdmin hcna@aaaaa.com
> DocumentRoot /home/djkim/public_html
> ServerName bbbbb.com
> ErrorLog /home/djkim/logs/djkim-error_log
> CustomLog /home/djkim/logs/djkim-access_log common
></VirtualHost>
>
><VirtualHost 192.168.0.12>
> ServerAdmin hcna@aaaaa.com
> DocumentRoot /home/hcna/public_html
> ServerName ccccc.com
> ErrorLog /home/hcna/logs/hcna-error_log
># CustomLog /home/hcna/logs/hcna-access_log common
> TransferLog /home/hcna/logs/hcna-access_log
></VirtualHost>
>
>.
>.
>.
>
>----------------------------------------------------------------
>
>마지막으로 TrasferLog와 CustomLog의 관계는 어떻게 되지여..?
>비슷한것으로 알고 있는데...VirtualHost에 TransferLog를 쓰고 CustomLog를 안써도 상관없는건가여..?
>왜 따로 분리를 해놓은것인지...^^;; 더 헷갈리게...ㅋㅋㅋ...
>
>넘 장황하게 질문을 한것은 아닌지...심히 죄송스럽게 생각합니다..
>바쁘신데도 불구하고 친절한답변에 항상 감사하게 생각합니다..
>그럼 수고하십시요..^^
========================================
[webalizer]
/etc/webalizer/webalizer.conf 파일을 다른 이름로 복사합니다.
분석하고자 하는 수 만큼..그리고 편집도..
/etc/cron.daily/webalizer
파일을 열어 분석하고자 하는 로그 파일을 모두 추가해줘야합니다.
쉘스크립트이므로 쉘스크립트로 짜야합니다.
>SetEnvIfNoCase Referer \.A_systemp\.com myreferer
>==> 의 해석이 정확히 어케 되는지여..?
>이해가 될것도 같은데....헷갈리네요..^^;;
환경변수 이름은 모두 동일하게 myreferer 로 해야합니다.
제가 실수로 myrefer 로 했군요...
SetEnvIfNoCase 지시자는
체크 부분을 대소문자 구별없이 체크하여 특정 환경변수(myreferer) 이름으로
지정하는 지시자입니다.
SetEnvIfNoCase Referer \.aaa\.com myreferer
이것은 HTTP헤더 요청중 Referer가 .aaa.com 문자열을 포함하고 있으면
환경변수 myreferer 로 지정합니다.
예를들어 .aaa.com문자열이 없으면 myreferer 환경변수는 NULL이 되겠지요.
좀더 포괄적으로 적용하기 위해서는
SetEnvIfNoCase Referer aaa\.com myreferer
이게 더 낫겠군요..
그리고
CustomLog /usr/local/apache/logs/myrefer_log combined env=myreferer
이것은 로그포맷 형식은 위에서 정의한 combined 형식으로 저장하되
myreferer 환경변수가 있는 것만 저장하라는 의미입니다.
따라서 myreferer가 NULL이면 저장하지 않죠...
>마지막으로 TrasferLog와 CustomLog의 관계는 어떻게 되지여..?
>비슷한것으로 알고 있는데...VirtualHost에 TransferLog를 쓰고 CustomLog를 안써도 상관없는건가여..?
>왜 따로 분리를 해놓은것인지...^^;; 더 헷갈리게...ㅋㅋㅋ...
TransferLog 지시자는 CustomLog지시자 처럼 로그포맷 인자(combinded,common,refer,...)
나 환경변수를 그 인자로 사용할 수 없습니다.
즉 단순히 아무런 필터기능없이 로깅하려면 TransferLog를 사용합니다.
앞의 예와 같이
어떤 특정한 형태(combinded)나 환경변수 조건에(env=myreferer)에 맞는
경우에는 당연히 CustomLog지시자를 사용해야합니다.
VirtualHost 섹션에는 둘중 어느것을 사용해도 상관없습니다. |