Apache限制IP并發(fā)數(shù)和流量控制的方法
本文章來給各位同學(xué)總結(jié)一下APACHE中限制IP連接數(shù)與IP并發(fā)數(shù)和流量控制實(shí)現(xiàn)方法,如果只限制連接數(shù)據(jù)我們可以直接使用limit,如果要限制其它的需要使用其它第三方模塊了
使用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
ExtendedStatus On LoadModule limitipconn_module modules/mod_limitipconn.so <ifModule mod_limitipconn.c> <location /> #對應(yīng)根目錄 MaxConnPerIP 5 #最大并發(fā)數(shù)為5 NoIPLimit image/* #對圖片不做限制 </location> <location /test> #對根目錄下的test目錄做限制 MaxConnPerIP 2 #最大并發(fā)數(shù)為2 </location> </ifModule>
如果想限制虛擬主機(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可以對IP的并發(fā)數(shù)進(jìn)行控制,也可以對下載流量進(jìn)行控制,也可以對某個(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配置文件:
LoadModule bw_module modules/mod_bw.so <virtualHost *:80> ServerName vhost1.cszhi.com DocumentRoot /var/www/vhost1 BandwidthModule On ForceBandWidthModule On Bandwidth all 1024000 MinBandwidth all 50000 #每個(gè)客戶端最高速度可達(dá)50KB LargeFileLimit * 500 50000 MaxConnection all 6 </virtualHost>
其它參數(shù)事例說明,詳細(xì)的見源碼包里的mod_bw.txt:
BandWidth localhost 0 #對localhost不限速 BandWidth 192.168.1.5 102400 #對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 就可以:
#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)共享對象,使之可以用由mod_so提供的LoadModule指令在運(yùn)行時(shí)加載到Apache服務(wù)器中。
輸入命令查看是否有httpd-devel這個(gè)包,如果沒有需要安裝
rpm -qa|grep httpd yum -y install httpd-devel
相關(guān)文章
Ubuntu/Linux 有關(guān)權(quán)限修改的命令解析
這篇文章主要介紹了Ubuntu/Linux 有關(guān)權(quán)限修改的命令的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11linux操作系統(tǒng)安裝sql developer步驟
本文介紹了linux安裝sql developer的步驟,大家參考使用吧2014-01-01Linux系統(tǒng)設(shè)置開機(jī)自動(dòng)運(yùn)行腳本的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)設(shè)置開機(jī)自動(dòng)運(yùn)行腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Linux系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06