|
리눅스일반 |
[1] |
|
등록일:2008-04-01 22:41:32 (0%) 작성자: 제목:아파치 1.x 에서의 트래픽 제한 |
|
글쓴이: 티니 (2007년 01월 10일 오후 04:59) 읽은수: 1,098
--------------------------------------------------------------------------------------
- 작성자 : 김혁중(티니) [sky(golbangi or at)tini4u.net]
- 작성일 : 2007-01-10
- 사이트 : http://linux.tini4u.net/
- 원제목 : 아파치 1.x 에서의 트래픽 제한
- 환 경 : CentOS 4.4, apache 1.3
- 키워드 : mod_throttle
--------------------------------------------------------------------------------------
이번 강좌는 아파치 1.x에서의 트래픽을 제한하는 모듈인 throttle에 대해서 다뤄보겠습니다.
이미 많은 분들이 아시겠지만 throttle은 각 호스트에 대한 트래픽을 다양하게 제한할 수 있는
모듈입니다.
throttle 모듈은 아파치 3rd party(Third-party) 모듈 이기 때문에, 아파치의 설치 방법에 따라서
그 설치법 또한 달라지게 되어 있습니다.
이곳 LTN의 웹서버 게시판에 보시면 아파치는 DSO와 Static 의 방식으로 운영될 수 있다는것을
확인하실 수 있을 것입니다.
1. mod_throttle 다운로드
이 강좌를 쓰는 시점인 2007년 01월 10일에는 현재 공식 개발사의 홈페이지를 가보게 되면
더이상 배포를 하지 않고 close 되었다는 문구를 보실 수 있습니다.
따라서 필자가 한글화 한 throttle 모듈의 소스를 필자의 개인 패키지미러에 올려두도록 하겠습니다.
테이블로 깔끔하게 정리해놨으니 기존의 throttle 모듈보다 보기 편하실 겁니다.
2. 아파치를 Static 으로 사용할 경우
아파치를 정적으로 빌드하여 운영할 경우에는 필요한 모듈을 미리 메모리에 적재해야 되기 때문에
아파치를 설치하기 전에 throttle 모듈도 같이 빌드를 해줘야 합니다.
빌드하는 방법은 아파치의 --add-module 옵션을 이용하시면 됩니다.
[root@localhost]# cd apache-1.3.37
[root@localhost]# ./configure --add-module=../mod_throttle/mod_throttle.c |
3. 아파치를 DSO 로 사용할 경우
아파치를 동적으로 빌드하여 운영할 경우에는 이미 so 모듈이 enabled 되어 있을 것입니다.
확인 방법은 httpd -l 을 했을 경우에 mod_so.c 가 출력이 되면 됩니다.
만약 출력이 되지 않는 경우 so 모듈을 따로 올려주셔야 됩니다.
[root@localhost]# cd mod_throttle
[root@localhost]# make install |
아파치를 DSO로 운영하면 apxs를 사용할 수 있기 때문에 설치 방법또한 간단합니다.
만약에 make install로 설치가 안되시는 분은 직접 apxs를 이용해서 설치할 수도 있습니다.
[root@localhost]# /usr/sbin/apxs -aic mod_throttle.c |
4. 아파치 환경설정에서의 throttle 설정
앞서 말했듯이 throttle은 아파치의 3rd-party 모듈이기 때문에 아파치 위에서 작동을 합니다.
따라서 설정 또한 아파치 환경설정 파일인 httpd.conf에서 해주게 됩니다.
- [root@localhost]# vi /etc/httpd/conf/httpd.conf
- <IfModule mod_throttle.c>
- ThrottlePolicy none
- <Location /throttle-status>
- SetHandler throttle-status
- Order deny,allow
- Deny from all
- Allow from 127.0.0.1 100.100.100.100
- </Location>
-
- <Location /throttle-me>
- SetHandler throttle-me
- Order deny,allow
- Deny from all
- Allow from all
- </Location>
-
- <Location /~*/throttle-me>
- SetHandler throttle-me
- Order deny,allow
- Deny from all
- Allow from all
- </Location>
- </IfModule>
|
※ SetHandler 설명
throttle-status -> 관리자 페이지 입니다. 따라서 접근을 허용할 IP를 입력해주셔야 됩니다.
throttle-me -> 사용자 페이지 입니다.
5. throttle 적용
throttle은 각 호스트에 대해서 여러가지 지시자를 사용하여 설정 할 수 있습니다.
아래는 여러가지 지시자중 하나인 가장 많이 사용되는 ThrottlePolicy 를 사용한 예제 입니다.
여러가지 지시자와 정책에 대한 설명은 다음 섹션에서 설명하도록 하겠습니다.
- <VirtualHost 192.168.0.1>
- ServerName foobar.com
- ServerAlias www.foobar.com
- DocumentRoot /home/foobar/public_html
- ErrorLog logs/foobar-err
- CustomLog logs/foobar-acc combined
- ThrottlePolicy Volume 100M 1d
- </VirtualHost>
|
※ 위 설정은 1day 동안 100M의 트래픽을 허용하겠다는 설정 입니다.
6. throttle 정책
- None: 아무런 정책이 없음. 주로 모니터링 용도로 사용
- Concurrent: 동시 접속수 제한. ThrottleClientIP, ThrottleRemoteUser와 같이 사용가능
- Document [제한수] [기간]: Request와 비슷하지만 html 문서를 카운트 시킬 수 있음
- Idle [시간] [기간]: 쉬는 시간.
- Random [NN%] [기간]: 0이면 모두 거절, 100이면 모두 허가, 그 외에는 랜덤하게 허가됨.
- Request [제한수] [기간]: 받아드릴 요청 수
- Speed [제한용량] [기간]: Volume과 비슷하지만 요청을 거절하지는 않고 연기(Delay) 시킴
- Volume [제한용량] [기간]: 해당 기간동안 제한시키며, 가장 많이 사용됩니다.
|
7. throttle 지시자
이름: ThrottleClientIP
설명: 접속한 IP를 설정해주면 됩니다.
문법: ThrottleClientIP [보여줄 IP수] [정책] [제한] [기간] |
이름: ThrottleContentType
설명: 통계를 출력할 형태를 지정하면 되며, text/html, text/plain 중에 하나를 넣으면 됩니다.
문법: ThrottleContentType [문자열] |
이름: ThrottleIndicator
설명: 결과에 따른 컬러를 조정할 수 있는 퍼센테이지와 컬러를 지정합니다.
문법: ThrottleIndicator [컬러] [NN%]
예제: ThrottleIndicator green 60
ThrottleIndicator yellow 80
ThrottleIndicator red 90 |
이름: ThrottleLockFile
이름: ThrottleRuntimeFile
설명: throttle에서 사용하는 파일을 강제로 지정해줄 수 있습니다.
문법: ThrottleLockFile [파일명]
문법: ThrottleRuntimeFile [파일명] |
이름: ThrottleMaxDelay
설명: throttle의 최대 Delay 시간을 정합니다. 기본은 60초이며, 0은 제한하지 않겠다는 뜻입니다.
문법: ThrottleMaxDelay [N/sec]
예제: ThrottleMaxDelay 60 |
이름: ThrottlePolicy
설명: 일반적으로 정책은 Volume과 Request를 사용합니다.
문법: ThrottlePolicy [정책] [제한] [기간]
예제: ThrottlePolicy Volume 100M 1d |
이름: ThrottleRefresh
설명: throttle 통계화면의 리로드 시간을 정합니다.
문법: ThrottleRefresh [N/sec]
예제: ThrottleRefresh 60 |
이름: ThrottleRemoteUser
설명: 접속자당 제한을 하는 지시자 입니다.
문법: ThrottleRemoteUser [크기] [정책] [제한] [기간] |
이름: ThrottleUser
설명: 로컬 사용자 제한을 등록합니다. 분산된 호스트를 관리할 때 사용합니다.
문법: ThrottleUser [사용자] [정책] [제한] [기간] |
8. 통계화면 보기
관리자모드 - http://foobar.com/throttle-status
사용자모드 - http://foobar.com/throttle-me
- http://foobar.com/~foo/throttle-me
9. 통계화면에 아파치 인증 걸기
보통 통계화면의 제한은 IP의 형태로 제한을 하는게 정설입니다.
그렇지만 IP가 자주 변경되는 분들은 매번 IP를 변경해주는것도 하나의 일이 될 수 있습니다.
따라서 이런 경우에는 아파치 인증을 걸어서 사용하시면 편리할 것입니다.
- [root@localhost]# vi /etc/httpd/conf/httpd.conf
- <IfModule mod_throttle.c>
- ThrottlePolicy none
- <Location /throttle-status>
- SetHandler throttle-status
- AuthName "트래픽관리 페이지"
- AuthType Basic
- AuthUserFile /home/foobar/.htpasswd
- require valid-user
- </Location>
-
- <Location /throttle-me>
- SetHandler throttle-me
- Order deny,allow
- Deny from all
- Allow from all
- </Location>
-
- <Location /~*/throttle-me>
- SetHandler throttle-me
- Order deny,allow
- Deny from all
- Allow from all
- </Location>
- </IfModule>
- [root@localhost]# htpasswd -c /home/foobar/.htpasswd ID
|
출처 : http://linux.tini4u.net/stories.php?story=07/01/10/5993233&topic=4 |
[본문링크] 아파치 1.x 에서의 트래픽 제한
|
[1]
|
|
|
|
|
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=3472 |
|
|
|
|
|
|
|
|
|
Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.
|
|
|