[Linux] mod_throttle

웹호스팅 서버를 운영하다 보면 해당 서버에 보통 많은 도메인들이 들어가게 됩니다.
이때 마다 해당 계정들의 트래픽과 하루 접속자 수를 모니터링 해야 하는 필요성이 있습니다.
이때 각각의 도메인에 대해 트래픽을 관리할 수 있는 방법으로 몇가지가 있지만.. mod_throttle
라는 아파치 모듈을 이용해서 할 수가 있습니다.
http://www.snert.com/Software/mod_throttle/mod_throttle312.tgz

먼저 위 파일을 다운받으신후 압축을 해제하고 DSO 모듈로 빌드를 해야겠죠..
# make install
하시면 간단히 모듈 설치가 끝납니다.

자 이제 설치가 끝났으면 httpd.conf 파일을 열어서 해당 모듈에대한 설정을 해주어야겟죠..
이제부터 설명을 하겠습니다.

※ 공통설정부분

[CODE]<Location /throttle-status> Order deny,allow Deny from all Allow from 211.202.1.247 </Location> [/CODE]

위는 throttle-status 를 설정하였을 경우 http://mydomain/throttle-status/ 로 접속시 모든
도메인에 대한 트래픽이나 접속자수등의 중요한 정보가 그대로 노출되므로 throttle-status 에
대해 특정 IP 대역에서만 (위의 경우 211.202.1.247 대역에서만) 접근이 가능하도록 제한하는 설정입니다.

※ 전체 적으로 트레픽을 조정시 일반설정..

[CODE]<IfModule mod_throttle.c> ThrottlePolicy Volume 300M 1d // 1일 300 M 로 제한 <Location /throttle-status> SetHandler throttle-status </Location> <Location /throttle-me> SetHandler throttle-me </Location> <Location /~*/throttle-me> Order deny,allow Deny from all Allow from all SetHandler throttle-me </Location> </IfModule> [/CODE]

위의 설정은 전체적으로 트레픽을 제한한것이다.
그러나 실질적으로는 throttlePolicy none 으로 설정해주는 것이 대부분이다.
throttle-me는 http://atpple.com/throttle-me/ 로 접속시 atpple.com 이라는 하나의 도메인에 대해서만 정보를 확인할 수 있도록 하는 방법이다.

그럼 가상호스트의 경우엔 어떻게 설정하는지 예를 보면서 설명하도록 하겠습니다.

[CODE]<VirtualHost 211.202.1.247> ServerAdmin webmaster@atpple.com DocumentRoot /home/atpple/public_html ServerName atpple.com ServerAlias atpple.com www.atpple.com Throttle Policy Volume 100M 1d // 요부분이죠 1일 100M 제한 ThrottlePolicy Request 1000 1d // 하루에 히트수 1000회 제한 ThrottleClientIP 100 volume 200 300 // 로그를 100K 남기며 300초간 200K 의 전송량 제한 ErrorLog /home/atpple/public_html/logs/error_log CustomLog /home/atpple/public_html/logs/access_log </VirtualHost>[/CODE]

위와 같이 설정 후 전송량이나 히트수등을 초과하면 atpple.com 접속시 원래의 페이지가 아닌
503 에러 화면이 뜨게 되며, ErrorDocument 503 /에러메세지경로 혹은 주소/ 로 redirect 설정을 추가해 주면
트래픽 초과시 503에러화면 대신 리다이렉트하여 지정해준 에러화면을 보여 주도록 합니다.
따라서 이 에러화면에 트래픽이나 히트수등의 초과에 대한 경고문등 적당한 메시지 화면을 만들면 됩니다.

간단히 응용하여 한가지를 설명하자면..

※ 일반 설정 부분.
[CODE]<IfModule mod_throttle.c> ThrottlePolicy Volume 300M 1d <Location /throttle-status> SetHandler throttle-status </Location> </IfModule>[/CODE]

※ 가상 호스트 설정 부분.
[CODE]<VirtualHost 211.202.1.247) ServerAdmin webmaster@atpple.com DocumentRoot /home/atpple/public_html ServerName atpple.com ThrottlePolicy Volume 500M 1d // 하루에 전송량 500M </VirtualHost>[/CODE]

위와 같이 설정시 별도로 제한을 설정하지 않은 모든 도메인은 하루 전송량이 1일 300메가로 제한되지만 atpple.com 은 500메가로 제한된다.

그러나 위와같이 설정할경우 제대로 동작하지 않는 경우가 있다고하므로 특정 도메인에 대해서는 가상호스트 설정시 선택적으로 적용하는것이 좋다.

모든 설정에 대한 관리는 http://mydomain/throttle-status 에서 가능하며 각 개인별 도메인에 대한 트레픽 사용양이나 히트수등은 http://도메인/throttle-me 에서 볼수있다.
특희 throttle-status 의 경우 현재까지 사용한 트레픽 양을 초기화 시킬수도 있으므로 꼭 특정 IP 에대한 대역을 설정해주기바란다.

wo.to 의 경우 throttle-status 의 대역설정이 되어있지않아 일반 사용자가 마음만 먹는다면 트레픽사용량에대한 초기화가 가능하다 접속경로는 알려드리지 않겠습니다. 악용의 우려가 있으므로..

출처 : http://www.linuxc.net.

'Computer > Network' 카테고리의 다른 글

[Linux] Apache Tunning  (0) 2005.05.24
[Linux] mrtg setting  (0) 2005.05.24
[Linux] mod_throttle  (0) 2005.05.24
[Linux] IPTABLE 기본 사용법  (5) 2005.05.24
[Linux] Proftpd 대역폭 제한하기  (0) 2005.05.24
[Linux] 계정별로 트래픽 제한하기  (0) 2005.05.24
TAGS.

Comments 0