Computer/Network

[Linux] mod_throttle

알찬돌삐 2005. 5. 24. 08:57
웹호스팅 서버를 운영하다 보면 해당 서버에 보통 많은 도메인들이 들어가게 됩니다.
이때 마다 해당 계정들의 트래픽과 하루 접속자 수를 모니터링 해야 하는 필요성이 있습니다.
이때 각각의 도메인에 대해 트래픽을 관리할 수 있는 방법으로 몇가지가 있지만.. 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] IPTABLE 기본 사용법  (6) 2005.05.24
[Linux] Proftpd 대역폭 제한하기  (0) 2005.05.24
[Linux] 계정별로 트래픽 제한하기  (0) 2005.05.24