작은숲:위키노트/아파치 mod cband 모듈: 두 판 사이의 차이

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
잔글 (문자열 찾아 바꾸기 - "분류:소프트웨어 설정" 문자열을 "분류:위키노트/소프트웨어 설정" 문자열로)
잔글 (Utolee90님이 위키노트:아파치 mod cband 모듈 문서를 넘겨주기를 만들지 않고 작은숲:위키노트/아파치 mod cband 모듈 문서로 이동했습니다: 위키노트 문서 작은숲으로 이동)
 
(같은 사용자의 중간 판 6개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{DISPLAYTITLE:아파치 mod_cband 모듈}}
{{DISPLAYTITLE:아파치 mod_cband 모듈}}
[[위키노트:아파치|아파치]] 1.x 버전에서는 <tt>mod_throttle</tt> 모듈과 <tt>mod_bandwidth</tt> 모듈을 통해 트래픽 제어를 할 수 있었다. 하지만 아파치 2로 넘어오면서 <tt>mod_throttle</tt> 모듈이나 <tt>mod_bandwidth</tt> 모듈을 더 이상 사용할 수 없게 되었다. 하지만 다행스럽게도 이 모듈들 대신 <tt>mod_cband</tt> 모듈을 통해 트래픽과 대역폭을 제한하고, 트래픽 제한 결과 등을 웹을 통해 확인할 수 있다.
[[작은숲:위키노트/아파치|아파치]] 1.x 버전에서는 <tt>mod_throttle</tt> 모듈과 <tt>mod_bandwidth</tt> 모듈을 통해 트래픽 제어를 할 수 있었다. 하지만 아파치 2로 넘어오면서 <tt>mod_throttle</tt> 모듈이나 <tt>mod_bandwidth</tt> 모듈을 더 이상 사용할 수 없게 되었다. 하지만 다행스럽게도 이 모듈들 대신 <tt>mod_cband</tt> 모듈을 통해 트래픽과 대역폭을 제한하고, 트래픽 제한 결과 등을 웹을 통해 확인할 수 있다.
== 설치 ==
== 설치 ==
<tt>mod_cband</tt> 소스 파일을 다운로드 한다.
<tt>mod_cband</tt> 소스 파일을 다운로드 한다.
7번째 줄: 7번째 줄:
* <del>http://freshmeat.net/redir/mod_cband/60304/url_tgz/mod-cband-0.9.7.5.tgz</del>
* <del>http://freshmeat.net/redir/mod_cband/60304/url_tgz/mod-cband-0.9.7.5.tgz</del>
* http://pkgs.fedoraproject.org/repo/pkgs/mod_cband/mod-cband-0.9.7.5.tgz/5c5d65dc9abe6cdc6931b6dd33be5018/mod-cband-0.9.7.5.tgz
* http://pkgs.fedoraproject.org/repo/pkgs/mod_cband/mod-cband-0.9.7.5.tgz/5c5d65dc9abe6cdc6931b6dd33be5018/mod-cband-0.9.7.5.tgz
<source lang="console">
<syntaxhighlight lang="console">
# wget http://pkgs.fedoraproject.org/repo/pkgs/mod_cband/mod-cband-0.9.7.5.tgz/5c5d65dc9abe6cdc6931b6dd33be5018/mod-cband-0.9.7.5.tgz
# wget http://pkgs.fedoraproject.org/repo/pkgs/mod_cband/mod-cband-0.9.7.5.tgz/5c5d65dc9abe6cdc6931b6dd33be5018/mod-cband-0.9.7.5.tgz
...
...
</source>
</syntaxhighlight>
다운 받은 파일을 적당한 곳에 옮긴 후 압축을 풀고, <code>apxs</code>의 경로를 확인한 후 <code>configure</code>를 실행한다.
다운 받은 파일을 적당한 곳에 옮긴 후 압축을 풀고, <code>apxs</code>의 경로를 확인한 후 <code>configure</code>를 실행한다.
<source lang="console">
<syntaxhighlight lang="console">
# tar zxvf mod-cband-0.9.7.5.tgz
# tar zxvf mod-cband-0.9.7.5.tgz
...
...
22번째 줄: 22번째 줄:
configure: creating ./config.status
configure: creating ./config.status
config.status: creating Makefile
config.status: creating Makefile
</source>
</syntaxhighlight>
[[위키노트:아파치|아파치]]의 버전이 2.4.x인 경우 곧바로 <tt>make</tt> 하면 아래와 같은 오류가 난다.
[[작은숲:위키노트/아파치|아파치]]의 버전이 2.4.x인 경우 곧바로 <tt>make</tt> 하면 아래와 같은 오류가 난다.
<source lang="console">
<syntaxhighlight lang="console">
# make
# make
/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
41번째 줄: 41번째 줄:
apxs:Error: Command failed with rc=65536
apxs:Error: Command failed with rc=65536
.make: *** [src/.libs/mod_cband.so] Error 1
.make: *** [src/.libs/mod_cband.so] Error 1
</source>
</syntaxhighlight>
이를 해결하기 위해 소스 파일 <code>src/mod_cband.c</code>을 백업한 후 아래와 같이 수정한다.
이를 해결하기 위해 소스 파일 <code>src/mod_cband.c</code>을 백업한 후 아래와 같이 수정한다.
<source lang="console">
<syntaxhighlight lang="console">
# /usr/local/apache/bin/apachectl -v
# /usr/local/apache/bin/apachectl -v
Server version: Apache/2.4.3 (Unix)
Server version: Apache/2.4.3 (Unix)
50번째 줄: 50번째 줄:
# sed s/remote_ip/client_ip/g -i src/mod_cband.c
# sed s/remote_ip/client_ip/g -i src/mod_cband.c
# sed s/c-\>remote_addr/c-\>client_addr/g -i src/mod_cband.c
# sed s/c-\>remote_addr/c-\>client_addr/g -i src/mod_cband.c
</source>
</syntaxhighlight>
<tt>mod_cband</tt>의 상태를 확인하는 <code>/cband-status</code> 기능에서 [[위키노트:글꼴|글꼴]]의 크기가 상당히 작으므로 [[위키노트:C 언어|C 언어]]와 [[위키노트:CSS|CSS]]에 대한 지식이 있다면 소스를 미리 수정하는 것도 괜찮은 방법이다. <code>src/mod_cband.c</code> 파일의 2485번째 줄 근처에 보면 화면 글꼴을 설정하는 [[위키노트:CSS|CSS]]가 있으니 이를 적당한 값으로 고치면 된다.
<tt>mod_cband</tt>의 상태를 확인하는 <code>/cband-status</code> 기능에서 [[작은숲:위키노트/글꼴|글꼴]]의 크기가 상당히 작으므로 [[작은숲:위키노트/C 언어|C 언어]]와 [[작은숲:위키노트/CSS|CSS]]에 대한 지식이 있다면 소스를 미리 수정하는 것도 괜찮은 방법이다. <code>src/mod_cband.c</code> 파일의 2485번째 줄 근처에 보면 화면 글꼴을 설정하는 [[작은숲:위키노트/CSS|CSS]]가 있으니 이를 적당한 값으로 고치면 된다.
<source lang="c">
<syntaxhighlight lang="c">
static const char mod_cband_status_handler_style[] =
static const char mod_cband_status_handler_style[] =
"\n<style type=\"text/css\">\n"
"\n<style type=\"text/css\">\n"
71번째 줄: 71번째 줄:
"div.footer { margin-top: 2.5em; text-align: center; font-size: smaller; }\n"
"div.footer { margin-top: 2.5em; text-align: center; font-size: smaller; }\n"
"</style>\n\n";
"</style>\n\n";
</source>
</syntaxhighlight>
수정이 끝나면 <code>make</code> 한 후, <code>make install</code> 한다.
수정이 끝나면 <code>make</code> 한 후, <code>make install</code> 한다.
<source lang="console">
<syntaxhighlight lang="console">
# make
# make
/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
112번째 줄: 112번째 줄:
chmod 755 /usr/local/apache/modules/mod_cband.so
chmod 755 /usr/local/apache/modules/mod_cband.so
[activating module `cband' in /usr/local/apache/conf/httpd.conf]
[activating module `cband' in /usr/local/apache/conf/httpd.conf]
</source>
</syntaxhighlight>
아파치의 설정 파일에 cband 모듈이 제대로 추가됐는지 확인한다.
아파치의 설정 파일에 cband 모듈이 제대로 추가됐는지 확인한다.
<source lang="console">
<syntaxhighlight lang="console">
# cat /usr/local/apache/conf/httpd.conf
# cat /usr/local/apache/conf/httpd.conf
...
...
LoadModule cband_module      modules/mod_cband.so
LoadModule cband_module      modules/mod_cband.so
...
...
</source>
</syntaxhighlight>
== 설정 ==
== 설정 ==
<code>httpd.conf</code>에 cband 모듈의 설정을 추가한다. 아래 내용에서는 <tt>mod_cband</tt>의 상태를 확인하는 <code>/cband-status</code> 기능에 대한 접근을 제한하고 있다. 접근을 허용할 IP 주소는 관리자가 사용하는 IP 주소로 설정하도록 한다.
<code>httpd.conf</code>에 cband 모듈의 설정을 추가한다. 아래 내용에서는 <tt>mod_cband</tt>의 상태를 확인하는 <code>/cband-status</code> 기능에 대한 접근을 제한하고 있다. 접근을 허용할 IP 주소는 관리자가 사용하는 IP 주소로 설정하도록 한다.
<source lang="apache">
<syntaxhighlight lang="apache">
<IfModule cband_module>
<IfModule cband_module>
     CBandScoreFlushPeriod 500
     CBandScoreFlushPeriod 500
141번째 줄: 141번째 줄:
     </Location>
     </Location>
</IfModule>
</IfModule>
</source>
</syntaxhighlight>
[[위키노트:아파치|아파치]]의 가상 호스트 설정 파일에 가상 호스트 별로 트래픽 관련 설정을 지정한다. 설정된 값들은 적당한 값으로 고치도록 한다. 그리고 만약 가상 호스트를 사용하지 않는다면 아파치 설정 파일에 아래 트래픽 관련 설정을 추가하면 된다.
[[작은숲:위키노트/아파치|아파치]]의 가상 호스트 설정 파일에 가상 호스트 별로 트래픽 관련 설정을 지정한다. 설정된 값들은 적당한 값으로 고치도록 한다. 그리고 만약 가상 호스트를 사용하지 않는다면 아파치 설정 파일에 아래 트래픽 관련 설정을 추가하면 된다.
이때 <tt><nowiki>mod_cband</nowiki></tt>의 설정은 <tt>ServerName</tt> 설정 이후에 해야 한다. 그렇지 않으면 아파치가 <tt>mod_cband</tt>의 지시자를 제대로 해석하지 못하고 오류를 낸다.
이때 <tt><nowiki>mod_cband</nowiki></tt>의 설정은 <tt>ServerName</tt> 설정 이후에 해야 한다. 그렇지 않으면 아파치가 <tt>mod_cband</tt>의 지시자를 제대로 해석하지 못하고 오류를 낸다.
<source lang="apache">
<syntaxhighlight lang="apache">
<VirtualHost *>
<VirtualHost *>
     ServerName my.sample.com
     ServerName my.sample.com
157번째 줄: 157번째 줄:
...
...
</VirtualHost>
</VirtualHost>
</source>
</syntaxhighlight>
특정 사용자가 여러 가상 호스트를 소유하고 있을 때, 특정 사용자가 소유한 모든 가상 호스트를 통합해서 제어하고자 할 때는 <tt><nowiki>CBandUser</nowiki></tt>를 설정한다. 이것은 웹호스팅 업체들에서 널리 사용하는 방법이다.
특정 사용자가 여러 가상 호스트를 소유하고 있을 때, 특정 사용자가 소유한 모든 가상 호스트를 통합해서 제어하고자 할 때는 <tt><nowiki>CBandUser</nowiki></tt>를 설정한다. 이것은 웹호스팅 업체들에서 널리 사용하는 방법이다.
<source lang="apache">
<syntaxhighlight lang="apache">
<IfModule cband_module>
<IfModule cband_module>
...
...
187번째 줄: 187번째 줄:
...
...
</VirtualHost>
</VirtualHost>
</source>
</syntaxhighlight>
모든 설정이 끝나면 설정한 내용을 다시 확인해보고 이상이 없으면 아파치를 재기동한다. 그런 후 [[위키노트:브라우저]]에서 설정한 도메인의 <code>/cband-status</code>에 접속하면 현재 <tt>mod_cband</tt>의 상태를 확인할 수 있다.
모든 설정이 끝나면 설정한 내용을 다시 확인해보고 이상이 없으면 아파치를 재기동한다. 그런 후 [[작은숲:위키노트/브라우저]]에서 설정한 도메인의 <code>/cband-status</code>에 접속하면 현재 <tt>mod_cband</tt>의 상태를 확인할 수 있다.
[[위키노트:모니위키|모니위키]]로 만든 [[위키노트:위키|위키]] 사이트의 경우 <tt>CBandSpeed</tt>, <tt>CBandUserSpeed</tt>, <tt>CBandRemoteSpeed</tt>를 넉넉하게 줘야 한다. 낮게 설정하면 위키 사이트가 상당히 느려진다. 아래는 설정 예이다. 자신의 사이트에 맞는 값을 찾아 설정하도록 한다.
[[작은숲:위키노트/모니위키|모니위키]]로 만든 [[작은숲:위키노트/위키|위키]] 사이트의 경우 <tt>CBandSpeed</tt>, <tt>CBandUserSpeed</tt>, <tt>CBandRemoteSpeed</tt>를 넉넉하게 줘야 한다. 낮게 설정하면 위키 사이트가 상당히 느려진다. 아래는 설정 예이다. 자신의 사이트에 맞는 값을 찾아 설정하도록 한다.
* <code>CBandSpeed 8Mbps 50 150</code>
* <code>CBandSpeed 8Mbps 50 150</code>
* <code>CBandUserSpeed 8Mbps 50 150</code>
* <code>CBandUserSpeed 8Mbps 50 150</code>
216번째 줄: 216번째 줄:
* [http://idchowto.com/?p=17012 Apache 2.4.x 서버에서 mod_cband 설치시 오류 메세지 처리 방법]
* [http://idchowto.com/?p=17012 Apache 2.4.x 서버에서 mod_cband 설치시 오류 메세지 처리 방법]
{{아파치}}
{{아파치}}
[[분류:공유]]
[[분류:위키노트/공유]]
[[분류:웹]]
[[분류:위키노트/웹]]
[[분류:리눅스]]
[[분류:리눅스]]
[[분류:시스템 도구]]
[[분류:시스템 도구]]
[[분류:소프트웨어 설치]]
[[분류:위키노트/소프트웨어 설치]]
[[분류:위키노트/소프트웨어 설정]]{{퍼온문서|위키노트|{{#invoke:string|replace|{{PAGENAME}}|위키노트:|}}}}[[분류:위키노트에서 가져온 문서]]
[[분류:위키노트/소프트웨어 설정]]{{퍼온문서|위키노트|{{#invoke:string|replace|{{PAGENAME}}|위키노트:|}}}}[[분류:위키노트에서 가져온 문서]]

2022년 5월 7일 (토) 19:22 기준 최신판

아파치 1.x 버전에서는 mod_throttle 모듈과 mod_bandwidth 모듈을 통해 트래픽 제어를 할 수 있었다. 하지만 아파치 2로 넘어오면서 mod_throttle 모듈이나 mod_bandwidth 모듈을 더 이상 사용할 수 없게 되었다. 하지만 다행스럽게도 이 모듈들 대신 mod_cband 모듈을 통해 트래픽과 대역폭을 제한하고, 트래픽 제한 결과 등을 웹을 통해 확인할 수 있다.

설치

mod_cband 소스 파일을 다운로드 한다.

# wget http://pkgs.fedoraproject.org/repo/pkgs/mod_cband/mod-cband-0.9.7.5.tgz/5c5d65dc9abe6cdc6931b6dd33be5018/mod-cband-0.9.7.5.tgz
...

다운 받은 파일을 적당한 곳에 옮긴 후 압축을 풀고, apxs의 경로를 확인한 후 configure를 실행한다.

# tar zxvf mod-cband-0.9.7.5.tgz
...
# cd mod-cband-0.9.7.5
# ls /usr/local/apache/bin/apxs
/usr/local/apache/bin/apxs
# ./configure --with-apxs=/usr/local/apache/bin/apxs
...
configure: creating ./config.status
config.status: creating Makefile

아파치의 버전이 2.4.x인 경우 곧바로 make 하면 아래와 같은 오류가 난다.

# make
/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/local/apache/build/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include  -I/usr/local/apache/include   -I/usr/local/apache/include  -Wall -DDST_CLASS=3  -c -o src/mod_cband.lo src/mod_cband.c && touch src/mod_cband.slo
src/mod_cband.c: In function 'mod_cband_create_traffic_size':
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c: In function 'mod_cband_get_dst':
src/mod_cband.c:1333: error: 'conn_rec' has no member named 'remote_ip'
src/mod_cband.c: In function 'mod_cband_get_remote_host':
src/mod_cband.c:1362: error: 'struct conn_rec' has no member named 'remote_ip'
src/mod_cband.c:1363: error: 'struct conn_rec' has no member named 'remote_ip'
src/mod_cband.c:1365: error: 'struct conn_rec' has no member named 'remote_addr'
apxs:Error: Command failed with rc=65536
.make: *** [src/.libs/mod_cband.so] Error 1

이를 해결하기 위해 소스 파일 src/mod_cband.c을 백업한 후 아래와 같이 수정한다.

# /usr/local/apache/bin/apachectl -v
Server version: Apache/2.4.3 (Unix)
Server built:   Jun 25 2014 17:16:43
# cp src/mod_cband.c src/mod_cband.c-dist
# sed s/remote_ip/client_ip/g -i src/mod_cband.c
# sed s/c-\>remote_addr/c-\>client_addr/g -i src/mod_cband.c

mod_cband의 상태를 확인하는 /cband-status 기능에서 글꼴의 크기가 상당히 작으므로 C 언어CSS에 대한 지식이 있다면 소스를 미리 수정하는 것도 괜찮은 방법이다. src/mod_cband.c 파일의 2485번째 줄 근처에 보면 화면 글꼴을 설정하는 CSS가 있으니 이를 적당한 값으로 고치면 된다.

static const char mod_cband_status_handler_style[] =
"\n<style type=\"text/css\">\n"
"body       { font-family: sans-serif; font-size: 0.6em; }\n"
"table      { font-family: tachoma, helvetica, verdana, sans-serif; border: 1px solid #d0d0d0; }\n"
"tr     { font-family: tachoma, helvetica, verdana, sans-serif; border: 1px solid #d0d0d0; }\n"
"td     { padding-left: 0.5em; padding-right: 0.5em; }\n"
"td.refresh { background-color: #0de2cb; text-align: right; }\n"
"td.speed   { background-color: #ffa1a1; text-align: left; }\n"
"td.speedc  { background-color: #ffb1b1; text-align: left; }\n"
"td.remote_odd  { background-color: #b4bfff; text-align: left; }\n"
"td.remote_even { background-color: #bfcfff; text-align: left; }\n"
"a      { text-decoration: none; color: #606060; }\n"
"a:hover    { text-decoration: underline; }\n"
"h1, h2     { font-family: tachoma, helvetica, verdana, sans-serif}\n"
".small     { font-size: smaller; }\n"
"div.section    { margin-top: 1.5em; margin-bottom: 0.5em; }\n"
"div.footer { margin-top: 2.5em; text-align: center; font-size: smaller; }\n"
"</style>\n\n";

수정이 끝나면 make 한 후, make install 한다.

# make
/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/local/apache/build/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include  -I/usr/local/apache/include   -I/usr/local/apache/include  -Wall -DDST_CLASS=3  -c -o src/mod_cband.lo src/mod_cband.c && touch src/mod_cband.slo
src/mod_cband.c: In function 'mod_cband_create_traffic_size':
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
/usr/local/apache/build/libtool --silent --mode=link gcc -std=gnu99    -o src/mod_cband.la  -rpath /usr/local/apache/modules -module -avoid-version    src/mod_cband.lo
write "make install" to install module
# make install
/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -i -a -n cband src/mod_cband.la
/usr/local/apache/build/instdso.sh SH_LIBTOOL='/usr/local/apache/build/libtool' src/mod_cband.la /usr/local/apache/modules
/usr/local/apache/build/libtool --mode=install install src/mod_cband.la /usr/local/apache/modules/
libtool: install: install src/.libs/mod_cband.so /usr/local/apache/modules/mod_cband.so
libtool: install: install src/.libs/mod_cband.lai /usr/local/apache/modules/mod_cband.la
libtool: install: install src/.libs/mod_cband.a /usr/local/apache/modules/mod_cband.a
libtool: install: chmod 644 /usr/local/apache/modules/mod_cband.a
libtool: install: ranlib /usr/local/apache/modules/mod_cband.a
libtool: finish: PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/sbin" ldconfig -n /usr/local/apache/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/apache/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache/modules/mod_cband.so
[activating module `cband' in /usr/local/apache/conf/httpd.conf]

아파치의 설정 파일에 cband 모듈이 제대로 추가됐는지 확인한다.

# cat /usr/local/apache/conf/httpd.conf
...
LoadModule cband_module       modules/mod_cband.so
...

설정

httpd.conf에 cband 모듈의 설정을 추가한다. 아래 내용에서는 mod_cband의 상태를 확인하는 /cband-status 기능에 대한 접근을 제한하고 있다. 접근을 허용할 IP 주소는 관리자가 사용하는 IP 주소로 설정하도록 한다.

<IfModule cband_module>
    CBandScoreFlushPeriod 500
    CBandRandomPulse Off
    <Location /cband-status>
        SetHandler cband-status
        Order deny,allow
        Deny from all
        # for admin
        Allow from 127.0.0.1 111.111.111.111/24
    </Location>
    <Location /cband-status-me>
        SetHandler cband-status-me
        Order deny,allow
        Deny from all
        # for admin
        Allow from 127.0.0.1 111.111.111.111/24
    </Location>
</IfModule>

아파치의 가상 호스트 설정 파일에 가상 호스트 별로 트래픽 관련 설정을 지정한다. 설정된 값들은 적당한 값으로 고치도록 한다. 그리고 만약 가상 호스트를 사용하지 않는다면 아파치 설정 파일에 아래 트래픽 관련 설정을 추가하면 된다. 이때 mod_cband의 설정은 ServerName 설정 이후에 해야 한다. 그렇지 않으면 아파치가 mod_cband의 지시자를 제대로 해석하지 못하고 오류를 낸다.

<VirtualHost *>
    ServerName my.sample.com
...
    <IfModule cband_module>
        CBandLimit 500Mi
        CBandExceededSpeed 128bps 5 10
        CBandPeriod 1D
        CBandSpeed 2Mbps 50 150
        CBandRemoteSpeed 1Mbps 20 20
    </IfModule>
...
</VirtualHost>

특정 사용자가 여러 가상 호스트를 소유하고 있을 때, 특정 사용자가 소유한 모든 가상 호스트를 통합해서 제어하고자 할 때는 CBandUser를 설정한다. 이것은 웹호스팅 업체들에서 널리 사용하는 방법이다.

<IfModule cband_module>
...
    <CBandUser sam>
        CBandUserLimit 500Mi
        CBandUserExceededSpeed 128bps 5 10
        CBandUserPeriod 1D
        CBandUserSpeed 2Mbps 50 150
    </CBandUser>
</IfModule>
<VirtualHost *>
    ServerName sam.sample.com
...
    <IfModule cband_module>
        CBandUser sam
        CBandRemoteSpeed 1Mbps 20 20
    </IfModule>
...
</VirtualHost>
<VirtualHost *>
    ServerName sam2.sample.com
...
    <IfModule cband_module>
        CBandUser sam
        CBandRemoteSpeed 1Mbps 20 20
    </IfModule>
...
</VirtualHost>

모든 설정이 끝나면 설정한 내용을 다시 확인해보고 이상이 없으면 아파치를 재기동한다. 그런 후 작은숲:위키노트/브라우저에서 설정한 도메인의 /cband-status에 접속하면 현재 mod_cband의 상태를 확인할 수 있다. 모니위키로 만든 위키 사이트의 경우 CBandSpeed, CBandUserSpeed, CBandRemoteSpeed를 넉넉하게 줘야 한다. 낮게 설정하면 위키 사이트가 상당히 느려진다. 아래는 설정 예이다. 자신의 사이트에 맞는 값을 찾아 설정하도록 한다.

  • CBandSpeed 8Mbps 50 150
  • CBandUserSpeed 8Mbps 50 150
  • CBandRemoteSpeed 8Mbps 20 20

설정 지시자

mod_cband의 설정 지시자에 대한 설명은 https://www.linux.co.kr/home/lecture/?leccode=10588를 참고. <archiveis>Vs252</archiveis>

mod_cband의 성능과 관련된 설정 지시자

CBandScoreFlushPeriod

CBandScoreFlushPeriod 지시자는 현재 대역폭 상태를 Scoreboard 파일에 저장하는 간격을 지정해주는 것인데, 기본값은 1이다. 이 말은 매 요청마다 현재 대역폭 상태를 Scoreboard 파일에 저장하도록 하는 것이고, 그렇기 때문에 mod_cband의 성능을 저하시키는 원인이 된다.

CBandRandomPulse

CBandRandomPulse 지시자의 경우 On으로 설정해놓으면 mod_cband에서 전송 속도 제한을 위해 임의의 파형을 만들어 이에 따라 제한하고, 부하가 많을 때는 자동으로 적용시키지 않게 된다. 기본값인 On으로 이 설정을 사용하면 전송 속도 제한을 위해 임의의 파형을 만드느라 성능을 저하시킬 수도 있다. 이를 Off로 설정해서 성능 저하를 최대한 막도록 한다.

같이 보기

참고

틀:아파치

이 작은숲 문서의 출처는 위키노트의 위키노트/아파치 mod cband 모듈 문서입니다.