디지문닷넷 - mod_cband 아파치 인증 연동 & 트래픽 통계 리셋 버그 해결
BLOG main image
241870 Visitors up to today!
Today 301 hit, Yesterday 283 hit
전체 (281)
일상 (54)
유희 (21)
견문록 (26)
PC 탐구 (141)
축구 (28)
애니메이션 (10)

디지문 호스팅

태터툴즈

이올린

올블로그

리눅스포털

SULinux

DNS Powered by DNSEver.com

너나우리

Serverchk.com

MRTG

Superuser Server Utility

rss

[디지문, 2008/09/25 14:56, PC 탐구/리눅스]
 아파치 2.x 버전에서 사용하는 트래픽관리 모듈 mod_cband에서 일일 단위로 트래픽 통계를 리셋하려면 버추얼호스트 설정에서 아래 옵션을 추가하죠. 붉은색으로 표시한 부분입니다.

<VirtualHost *>
    DocumentRoot /home/aaa/www
    ServerName www.aaa.digimoon.net
    ServerAlias aaa.digimoon.net
    ErrorLog /var/log/vhost/aaa/error_log
    CustomLog /var/log/vhost/aaa/access_log cnxlog
    CBandLimit 10000Mi
    CBandPeriod 1D
</VirtualHost>

 그러나 mod_cband 자체 버그인지는 몰라도 각 계정별로 설정한 버추얼호스트 리스트가 다수이거나 각각 설정해 둔 트래픽 리셋 주기가 제각각일 경우 그냥 내버려 두면 하루가 지나도 이틀이 지나도 자동 리셋이 안 되어 있더군요. KLDPphpschool에서도 답을 구할 수가 없어서 궁리를 한 끝에 짜낸 방법입니다.


 httpd.conf 파일에 mod_cband 환경설정은 통상 아래와 같이 합니다.
<IfModule mod_cband.c>
<Location /cband-status>
    SetHandler cband-status
    Order deny,allow
    Deny from all
    Allow from 11.11.11.11
</Location>
<Location /cband-status-me>
    SetHandler cband-status-me
    Order deny,allow
    Deny from all
    Allow from all
</Location>
</IfModule>
※ <Location /cband-status>, <Location /cband-status-me> 옵션 부분은 자신이 원하는 대로 설정을 변경해서 사용해도 됩니다. <Location /traffic>, <Location /traffic-me>로 변경해 주면 트래픽 리셋 페이지에 http://도메인/cband-status 가 아닌 http://도메인/traffic 으로 접속하면 됩니다.
 
 위 설정에 의하면 계정 전체 트래픽을 제어할 수 있는 관리페이지에 접근할 수 있는 IP는 11.11.11.11입니다.
아무 클라이언트나 접속하게 두면 트래픽 리셋 버튼을 아무나 누를 수 있기 때문에 특정 IP만 접근할 수 있도록 설정하죠.
 관리자페이지를 보면 reset all 이란 버튼이 있습니다. 이걸 직접 클릭해서 계정 전체의 트래픽을 리셋할 수 있습니다. 아파치 버추얼호스트 설정에 추가한 옵션으로 자동 리셋이 되지 않는 문제를 주기적으로 이 reset all 버튼을 직접 누르게끔 해서 해결할 수 있습니다.

 reset all 버튼에 마우스 우클릭을 하여 나오는 속성에서 URL를 확인할 수 있습니다. wget 커맨드 뒤에 이 URL을 입력하여 엔터 치면 웹상에서 reset all 버튼을 누르는 것과 같은 효과를 낼 수 있습니다.

사용자 삽입 이미지

  제 서버의 reset all 버튼 URL은 위와 같습니다. http://www.digimoon.net/traffic?reset=all 까지만 복사해서 사용하면 됩니다.
 [reset all 버튼의 URL]

  텍스트 웹브라우저의 하나인 lynx를 이용하는 방법도 있습니다. 사용법은 아래와 같습니다.
/usr/bin/lynx --source [reset all 버튼의 URL]

 lynx 패키지는 CenOS 5.x의 경우 yum으로 간단하게 설치할 수 있습니다.
# yum -y install lynx


 wget을 이용하는 방법과 lynx를 이용하는 방법 둘 중에 하나를 골라 cron에 매일 00시 00분에 실행되도록 해서 사용하면 됩니다.
00 00 * * * root /usr/bin/lynx --source [reset all 버튼의 URL]




지금까지 설명한 내용은 트래픽 리셋 페이지를 특정 IP에서만 접근 가능케 설정하는 경우였습니다. 이 경우 클라이언트의 IP가 바뀔 때마다 일일이 터미널로 서버에 접속해서 아파치 설정을 변경해 주어야 하는 불편함이 따르게 되죠. 그래서 .htaccess 파일을 이용한 아파치 인증 방식을 도입하면 좀 더 편리하게 관리할 수 있습니다.

아래와 같이 cband 설정을 변경합니다.
<IfModule mod_cband.c>
<Location /cband-status>
   SetHandler cband-status
   AuthName "트래픽 관리 페이지"
   AuthType Basic
   AuthUserFile /home/digimoon/www/cband-status/.htpasswd
   require valid-user
</Location>
<Location /cband-status-me>
etHandler cband-status-me
   Order deny,allow
   Deny from all
   Allow from all
</Location>
</IfModule>

아파치 인증을 위한 .htaccess, .htpasswd 파일을 생성하여 cband 설정의 AuthUserFile 옵션에 정의해 둔 경로에 넣어두고 아파치 리스타트하면 적용됩니다. 아파치 인증에 관한 자료는 인터넷 검색으로 각자 해결하시고... ^^

그리고 lynx 커맨드에 아래와 같이 인증 옵션을 추가해서 실행하면 됩니다.
/usr/bin/lynx -auth=ID:패스워드 --source [reset all 버튼의 URL]
2008/09/25 14:56 2008/09/25 14:56
Trackback Address :: http://www.digimoon.net/blog/trackback/318
도아 | 2008/10/14 20:01 | PERMALINK | EDIT/DEL | REPLY
한때는 솔라리스에 아파치를 깔아 자체서버를 운영했기 때문에 노상 하던 작업인데 요즘은 낯설게 느껴지는군요.
디지문 | 2008/10/14 20:35 | PERMALINK | EDIT/DEL
오~ 솔라리스도 좀 공부해 봐야 되는데 리눅스 하나만으로도 벅차서... ㅋ
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret