Apachectl 버전 확인
[root@cakeon ~]# /usr/local/httpd/bin/apachectl -v
Server version: Apache/2.2.16 (Unix)
Server built: Aug 21 2010 16:10:06
1. Cband 설치(mod-cband-0.9.7.5.tgz)
[root@cakeon mod-cband-0.9.7.5]# wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz
[root@localhost src]# vi /usr/local/src/mod_cband/src/mod_cband.c
2467 "\n<style type=\"text/css\">\n" |
[root@cakeon mod-cband-0.9.7.5]# ./configure --with-apxs=/usr/local/httpd/bin/apxs
[root@cakeon mod-cband-0.9.7.5]# make && make install
2. 모듈 확인(설치 후 자동 생성)
[root@cakeon ~]# vi /usr/local/httpd/conf/httpd.conf
LoadModule cband_module modules/mod_cband.so
참고) 모듈 설치시 자동으로 위의 내용이 생성됩니다.
3. httpd.conf mod_cband.c 설정(추가)
[root@byungun ~]# vi /usr/local/apache2/conf/httpd.conf
----------------------------------------------------------------------------------------------
<IfModule mod_cband.c>
<Location /cband-status>
SetHandler cband-status
</Location>
<Location /cband-status-me>
SetHandler cband-status-me
</Location>
<Location /~*/cband-status-me>
SetHandler cband-status-me
</Location>
<Location /cband-status>
SetHandler cband-status
Order deny,allow
Deny from all
Allow from all
</Location>
</IfModule>
1. mod_cband 설치 (최신버전):://cband.linux.pl/)
http://www.sfr-fresh.com/unix/privat/mod-cband-0.9.7.5.tgz/
[root@manage src]# wget http://www.sfr-fresh.com/unix/privat/mod-cband-0.9.7.5.tgz
[root@manage src]# tar xvzfp mod-cband-0.9.7.5.tgz
[root@manage src]# cd mod-cband-0.9.7.5
[root@manage mod-cband-0.9.7.5]# ./configure --with-apxs=/usr/local/apache/bin/apxs
[root@manage mod-cband-0.9.7.5]# make
[root@manage mod-cband-0.9.7.5]# make install
2. 아파치 환경설정에서의 cband 설정
cband 모듈 또한 throttle와 마찬가지로 3rd-party 모듈이기 때문에 아파치에서 설정을 합니다.
|
※ SetHandler 설명
cband-status -> 관리자 페이지 입니다. 따라서 접근을 허용할 IP를 입력해주셔야 됩니다.
cband-me -> 사용자 페이지 입니다.
3. cband 적용
cband는 각 호스트에 대해서 여러가지 지시자를 사용하여 설정 할 수 있습니다.
아래는 여러가지 지시자중 하나인 가장 많이 사용되는 CbandLimit을 사용한 예제 입니다.
|
※ 위 설정은 1Day 동안 100M의 트래픽을 허용하겠다는 설정입니다.
|
※ 위 설정은 foobar 유저에게 1Day 동안 100M의 트래픽을 허용하겠다는 설정이며,
foobar.com과 foobar2.com에서 foobar 유저의 트래픽을 공유해서 사용하겠다는 것입니다.
4. cband 단위
- 전송속도 단위
kbps, Mbps, Gbps - bits per second, 의미: 1024, 1024*1024, 1024*1024*1024 bps kb/s, Mb/s, Gb/s - bytes per second, 의미: 1024, 1024*1024, 1024*1024*1024 b/s 기본값 : kbps |
- 트래픽 제한 단위
K, M, G - bytes, 의미: 1000, 1000*1000, 1000*1000*1000 bytes Ki, Mi, Gi - bytes, 의미: 1024, 1024*1024, 1024*1024*1024 bytes 기본값: K |
- 시간 단위
S, M, H, D, W - 초, 분, 시간, 일, 주. 의미: 1, 60, 3600, 86400, 604800 Seconds 기본값: S |
5. cband 지시자
이름: CBandDefaultExceededURL 설명: 제한을 초과했을때 보여줄 URL 문맥: Server config 문법: CBandDefaultExceededURL [URL] 예제: CBandDefaultExceededURL http://foobar.com/503.html |
이름: CBandDefaultExceededCode 설명: 제한을 초과했을시 보여줄 에러 코드 문맥: Server config 문법: CBandDefaultExceededCode [HTTP_CODE] 예제: CBandDefaultExceededCode 509 |
이름: CBandScoreFlushPeriod 설명: scoreboard 파일에 기록할 요청수를 정하나, cband 퍼포먼스에 영향을 미칩니다. 기본값: 1 문맥: Server config 문법: CBandScoreFlushPeriod [요청수] 예제: CBandScoreFlushPeriod 100 100번의 요청이 들어오면 scoreboard 파일에 한번 기록합니다. |
이름: CBandSpeed 설명: 가상호스트 도메인의 최대 속도, 요청수, 접속수 설정 문맥: <Virtualhost> 문법: CBandSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: CBandSpeed 1024 10 30 호스트에 대해 1024kbps 전송속도로 제한하며, 초당 10개의 요청을 처리하고, 동시 접속을 30개로 제한합니다. |
이름: CBandRemoteSpeed 설명: 호스트 접속자의 최대속도, 요청수, 접속수 제한 문맥: <Virtualhost> 문법: CBandRemoteSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: CBandRemoteSpeed 20kb/s 3 3 호스트 접속자에 대해 1024kbps 전송속도로 제한하며, 초당 10개의 요청을 처리하고, 동시 접속을 30개로 제한합니다. |
이름: CBandClassRemoteSpeed 설명: IP class의 최대속도, 요청수, 접속수 제한 문맥: <Virtualhost> 문법: CBandClassRemoteSpeed [class_name] [kbps] [rps] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: <CBandClass googlebot_class> CBandClassDst 66.249.64/24 CBandClassDst 66.249.65/24 CBandClassDst 66.249.79/24 </CBandClass> CBandClassRemoteSpeed googlebot_class 20kb/s 2 3 googlebot_class 클래스에 대해 20kb/s 전송속도로 제한하며, 초당 10개의 요청을 처리하고, 동시 접속을 30개로 제한합니다. |
이름: CBandRandomPulse 설명: 속도 제한을 위해서 임의의 파형을 생성한 다음 처리하는 방법입니다. 문맥: Global 문법: CBandRandomPulse [On/Off] 예제: CBandRandomPulse On |
이름: CBandLimit 설명: 제한할 전송량을 설정한다. 문맥: <Virtualhost> 문법: CBandLimit [limit] limit - 전송량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) 예제: CBandLimit 10M 전송량을 10M(10*1000*1000bytes)로 제한한다. CBandLimit 10Mi 전송량을 10M(10*1024*1024bytes)로 제한한다. |
이름: CBandClassLimit 설명: IP class에 대해 제한할 전송량 설정 문맥: <Virtualhost> 문법: CBandClassLimit [class_name limit] class_name - 클래스 이름 limit - 전송량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) |
이름: CBandExceededURL 설명: 제한을 초과했을때 보여줄 URL 문맥: <Virtualhost> 문법: CBandExceededURL [URL] 예제: CBandExceededURL http://foobar.com/503.html |
이름 : CBandExceededSpeed 설명: 전송량을 초과했을때의 전송속도 제한 설정 문맥: <Virtualhost> 문법: CBandExceededSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 |
이름: CBandScoreboard 설명: 가상호스트의 scoreboard 파일 지정 문맥: <Virtualhost> 문법: CBandScoreboard [path] |
이름: CBandPeriod 설명: 제한기간 문맥: <Virtualhost> 문법: CBandPeriod [period] period - 사용단위: S(초), M(분), H(시간), D(일), W(주) 예제: CBandPeriod 1D |
이름 : CBandPeriodSlice 설명: 기간을 나눌 기간 명시 기본값: slice_len = limit 문법: CBandPeriodSlice [slice_length] 예제: CBandLimit 100G CBandPeriod 4W CBandPeriodSlice 1W 지정된 제한값을 1주일 단위로 나누어 사용 합니다. 위 설정을 해석하면 4주는 1주일 단위로 나누며, 용량은 100G/4주=25G로 사용 합니다. |
이름: <CBandUser> 설명: 새로운 cband 가상 사용자 설정 문맥: Server config 문법: <CBandUser user_name> |
이름: CBandUserSpeed 설명: cband 가상 사용자의 속도, 요청수, 동시 접속수 제한 문맥: <CBandUser> 문법: CBandUserSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: CBandUserSpeed 100kb/s 10 5 |
이름: CBandUserLimit 설명: cband 가상 사용자의 전송 용량 제한 문맥: <CBandUser> 문법: CBandUserLimit [limit] limit - 사용용량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) 예제: CBandUserLimit 10M 전송량을 10M(10*1000*1000bytes)로 제한한다. CBandUserLimit 10Mi 전송량을 10M(10*1024*1024bytes)로 제한한다. |
이름: CBandUserClassLimit 설명: cband 가상 사용자의 IP class에 대해 제한할 전송량 설정 문맥: <CBandUser> 문법: CBandUserClassLimit [class_name] [limit] class_name - 클래스 이름 limit - 전송량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) |
이름 : CBandUserExceededURL 설명: cband 가상 사용자의 제한을 초과했을때 보여줄 URL 문맥: <CBandUser> 문법: CBandUserExceededURL URL 예제: CBandDefaultExceededURL http://foobar.com/503.html |
이름: CBandUserExceededSpeed 설명: cband 가상 사용자의 전송량을 초과했을때의 전송속도 제한 설정 문맥: <CBandUser> 문법: CBandUserExceededSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 |
이름: CBandUserScoreboard 설명: cband 가상 사용자의 scoreboard 파일 지정 문맥: <CBandUser> 문법: CBandUserScoreboard [path] |
이름: CBandUserPeriod 설명: cband 가상 사용자의 제한기간 문맥: <CBandUser> 문법: CBandUserPeriod [period] period - 사용단위: S(초), M(분), H(시간), D(일), W(주) 예제: CBandPeriod 1D |
이름: CBandUserPeriodSlice 설명: cband 가상 사용자의 기간을 나눌 기간 명시 기본값: slice_len = limit 문맥: <CBandUser> 문법: CBandUserPeriodSlice [slice_length] 예제: CBandLimit 100G CBandPeriod 4W CBandPeriodSlice 1W 지정된 제한값을 1주일 단위로 나누어 사용 합니다. 위 설정을 해석하면 4주는 1주일 단위로 나누며, 용량은 100G/4주=25G로 사용 합니다. |
6. 통계화면 보기
관리자모드 - http://foobar.com/cband-status
관리자모드(xml) - http://foobar.com/cband-status?xml
사용자모드 - http://foobar.com/cband-me
사용자모드(xml) - http://foobar.com/cband-me?xml
7. 통계화면에 아파치 인증 걸기
throttle 강좌에서도 말씀드렸지만 통계화면의 제한은 IP의 형태로 제한을 하는게 정설입니다.
그렇지만 IP가 자주 변경되는 분들은 매번 IP를 변경해주는것도 하나의 일이 될 수 있습니다.
따라서 이런 경우에는 아파치 인증을 걸어서 사용하시면 편리할 것입니다.
|