Apache限制IP併發數和流量控制

使用mod_limitipconn模塊限制IP併發鏈接數
安裝:html

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.confapache

1
2
3
4
5
6
7
8
9
10
11
12
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.so  #將路徑修改成安裝後的路徑,保存時去掉如下代碼的註釋
 
<ifModule mod_limitipconn.c>
<location />                                              #對應根目錄
      MaxConnPerIP 5                                  #最大併發數爲5
      NoIPLimit image/*                               #對圖片不作限制
</location>
<location /test>                                       #對根目錄下的test目錄作限制
     MaxConnPerIP 2                                   #最大併發數爲2
</location>
</ifModule>

若是想限制虛擬主機的ip併發鏈接數,能夠修改extra/httpd-vhost.conf把 IfModule mod_limitipconn.c 這一段複製到Virtualhost中就能夠了。瀏覽器

測試:
測試很簡單,把最大鏈接數調小一點,隨便一個瀏覽器訪問頁面,而後按着F5,讓頁面不斷刷新,一下就能夠彈出503錯誤服務器

使用mod_bandwidth模塊限制帶寬
mod_bandwidth能夠對IP的併發數進行控制,也能夠對下載流量進行控制,也能夠對某個目錄的流量進行控制。
安裝:併發

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配置文件:dom

1
2
3
4
5
6
7
8
9
10
11
12
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          #每一個客戶端最高速度可達50KB
        LargeFileLimit * 500 50000
        MaxConnection all 6
</virtualHost>

其它參數事例說明,詳細的見源碼包裏的mod_bw.txt:工具

1
2
3
4
5
6
7
8
9
10
11
BandWidth localhost 0                                      #對localhost不限速
BandWidth 192.168.1.5 102400                       #對192.168.1.5限速爲100KB
BandWidth 「u:^Mozilla(.*)」 10240              #用mozilla時限速10KB
BandWidth 「u:wget」 102400                      #若是用wget下載時限速10KB
MinBandWidth all -1                                      #保證每一個客戶端最高速度可達10KB
LargeFileLimit .jpg 100 10240                      #jpg文件超過100KB,限速10KB
#下面的510挺好,若是不設置,apache本身會報錯,就根報404差很少,頁面很是的醜
ErrorDocument 510 /exceed_speed.html
BandWidthError 510
MaxConnection all 10                                       #全部ip最大鏈接數爲10
MaxConnection 192.168.1.5 5                         #192.168.1.5最大鏈接數爲5

測試:
使用mod_bw.so模塊前:
bw_limit
使用mod_bw.so模塊後:
bw_limit2測試

安裝過程當中可能出現的問題:atom

一、添加完mod_bw.so模塊,重啓apache時出現錯誤:.net

[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

二、若是服務器沒有安裝apxs,能夠參照如下方法安裝:
apxs是一個爲Apache HTTP服務器編譯和安裝擴展模塊的工具,用於編譯一個或多個源程序或目標代碼文件爲動態共享對象,使之能夠用由mod_so提供的LoadModule指令在運行時加載到Apache服務器中。

輸入命令查看是否有httpd-devel這個包,若是沒有須要安裝

rpm -qa|grep httpd
yum -y install httpd-devel

 https://blog.csdn.net/lgq421033770/article/details/44673237

相關文章
相關標籤/搜索