【轉(zhuǎn)】Apache限制IP并發(fā)數(shù)和流量控制
使用mod_limitipconn模塊限制IP并發(fā)連接數(shù)

安裝:
wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 tar jxvf mod_limitipconn-0.24.tar.bz2 cd mod_limitipconn-0.24 /usr/local/apache2/bin/apxs -c -i mod_limitipconn.c
編輯httpd.conf
1 2 3 4 5 6 7 8 9 10 11 12
ExtendedStatus On LoadModule limitipconn_module modules/mod_limitipconn.so ?
如果想限制虛擬主機(jī)的ip并發(fā)連接數(shù),可以修改extra/httpd-vhost.conf把 IfModule mod_limitipconn.c 這一段復(fù)制到Virtualhost中就可以了。
測試:
測試很簡單,把最大連接數(shù)調(diào)小一點(diǎn),隨便一個(gè)瀏覽器訪問頁面,然后按著F5,讓頁面不斷刷新,一下就可以彈出503錯(cuò)誤
使用mod_bandwidth模塊限制帶寬
mod_bandwidth可以對(duì)IP的并發(fā)數(shù)進(jìn)行控制,也可以對(duì)下載流量進(jìn)行控制,也可以對(duì)某個(gè)目錄的流量進(jìn)行控制。
安裝:
wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz tar zxvf mod_bw-0.7.tgz cd mod_bw /usr/local/apache2/bin/apxs -c -i mod_bw.c
編輯httpd.conf配置文件:
1 2 3 4 5 6 7 8 9 10 11 12
LoadModule bw_module modules/mod_bw.so ?
其它參數(shù)事例說明,詳細(xì)的見源碼包里的mod_bw.txt:
1 2 3 4 5 6 7 8 9 10 11
BandWidth localhost 0 #對(duì)localhost不限速 BandWidth 192.168.1.5 102400 #對(duì)192.168.1.5限速為100KB BandWidth “u:^Mozilla(.*)” 10240 #用mozilla時(shí)限速10KB BandWidth “u:wget” 102400 #如果用wget下載時(shí)限速10KB MinBandWidth all -1 #保證每個(gè)客戶端最高速度可達(dá)10KB LargeFileLimit .jpg 100 10240 #jpg文件超過100KB,限速10KB #下面的510挺好,如果不設(shè)置,apache自己會(huì)報(bào)錯(cuò),就根報(bào)404差不多,頁面非常的丑 ErrorDocument 510 /exceed_speed.html BandWidthError 510 MaxConnection all 10 #所有ip最大連接數(shù)為10 MaxConnection 192.168.1.5 5 #192.168.1.5最大連接數(shù)為5
測試:
使用mod_bw.so模塊前:
使用mod_bw.so模塊后:
安裝過程中可能出現(xiàn)的問題:
1、添加完mod_bw.so模塊,重啟apache時(shí)出現(xiàn)錯(cuò)誤:
[root@vps httpd]# /etc/init.d/httpd restart Stopping httpd: [FAILED] Starting httpd: httpd: Syntax error on line 203 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_bw.so into server: /etc/httpd/modules/mod_bw.so: undefined symbol: apr_atomic_cas [FAILED]
修改一下mod_bw.c 就可以:
1 2 3 4 5 6 7 8 9
#ifdef APR_MAJOR_VERSION //添加這行 #if (APR_MAJOR_VERSION < 1) #define apr_atomic_inc32 apr_atomic_inc #define apr_atomic_dec32 apr_atomic_dec #define apr_atomic_add32 apr_atomic_add #define apr_atomic_cas32 apr_atomic_cas #define apr_atomic_set32 apr_atomic_set #endif #endif //添加這行
重新編譯:
/usr/local/apache2/bin/apxs -c -i mod_bw.c
2、如果服務(wù)器沒有安裝apxs,可以參照以下方法安裝:
apxs是一個(gè)為Apache HTTP服務(wù)器編譯和安裝擴(kuò)展模塊的工具,用于編譯一個(gè)或多個(gè)源程序或目標(biāo)代碼文件為動(dòng)態(tài)共享對(duì)象,使之可以用由mod_so提供的LoadModule指令在運(yùn)行時(shí)加載到Apache服務(wù)器中。
輸入命令查看是否有httpd-devel這個(gè)包,如果沒有需要安裝
rpm -qa|grep httpd yum -y install httpd-devel
來源;http://www.cszhi.com/20120512/apache-mod_bandwidth-mod_limitipconn.html
Apache
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。