아파치 웹서버 가상호스트 별, 속도 제한 적용하기

category 서버/리눅스 서버 2018.04.14 04:23

안녕하세요.


웹서버에 부하가 많이 차서 속도를 제한해야되어서 방법을 찾아보았습니다.


모듈은 ratelimit 이라는 모듈을 사용합니다.


공식 문서는 아래를 참고하시면 되겠습니다.


https://httpd.apache.org/docs/trunk/mod/mod_ratelimit.html


먼저 모듈을 활성화 합니다.


일단 제 서버환경은 아래와 같고 Debian 8 에서 Repo 에 올라가있는 버전 그대로입니다. 모듈이 이미 들어가 있음으로 모듈을 따로 컴파일 하거나 등록을 하지 않으셔도 됩니다.


root@debian-4350:~# apache2 -v

Server version: Apache/2.4.10 (Debian)

Server built:   Sep 20 2017 04:37:43


모듈활성화는 아래와 같습니다.


root@debian-4350:~# a2enmod ratelimit

Considering dependency env for ratelimit:

Module env already enabled

Module ratelimit already enabled


ratelimit 이 의존하고 있는 모듈이 env 모듈이라 같이 활성화가 됩니다.


그럼 다음으로 속도 제한을 활성화 하는 방법에 대해서 알아보겠습니다.


웹서버 설정파일을 열어서 아래와 같이 수정하시면 되겠습니다. 편하게 보기 위해서 전체 파일을 올려 드립니다.


<VirtualHost *:80>

ServerName download.djjproject.com

ServerAdmin djj9404@gmail.com

DocumentRoot /media/volume1/htdocs/download

DirectoryIndex index.html index.php /_h5ai/public/index.php


SetOutputFilter RATE_LIMIT

SetEnv rate-limit 1000



SetEnvIfNoCase User-Agent .*Kodi.* black_list

<Directory /media/volume1/htdocs/download/epg>

        Order Allow,Deny

Allow from all

        Deny from env=black_list

SetOutputFilter RATE_LIMIT

        SetEnv rate-limit 100

</Directory>



</VirtualHost>


상기 방법대로 download.djjproject.com 에 대한 가상호스트에는 1000Kbit/s 의 속도 제한을 거는 것입니다.


만약에 특정한 하위 폴더에 또 적용을 하고 싶으시면 경로를 지정해주신 다음에 해당 명령어를 또 쓰시면 되겠습니다.


실제로 속도 제한이 걸리는지 확인을 해보겠습니다.


일단 설정을 하셨다면 아래의 명령어로 설정을 갱신해 주시길 바랍니다.


root@debian-4350:~# service apache2 reload

root@debian-4350:~# 


상기 명령어에서 reload 를 쓰는 이유는 restart 를 하면 현재 연결중인 클라이언트가 연결이 끊기기 때문입니다. 추가적으로 설정파일이 잘못되었을 경우 웹서버의 중단을 막을 수 있습니다.


에러가 나면 reload 하는데 에러가 났다고 알려주고 서버는 이전 설정으로 동작이 계속 되기 때문입니다.



속도 제한이 걸리고 있는 부분입니다.


한편, 이 모듈이 생긴지 얼마 되지 않아서 웹서버와 브라우저간에 요청하는 방식에 따라서 속도제한이 걸리지 않는 부분도 있습니다. 


다음에 시간이 나면 mod_cband 를 설정하는 방법에 대해서도 알아보겠습니다.


감사합니다.






댓글을 달아 주세요