首页 > linux基础 > 使用apsx加载mod_bw.so
2013
04-28

使用apsx加载mod_bw.so

        首页要明白,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。

        而mod_bw是mod_bandwidth的缩写,可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。

首先先下载mod_bw,且安装apxs进行编译:

参数的意思如下:

-i 此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。

-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之

-c 此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认生成在apache安装目录modules/mod_name.so下

这个操作完了之后,apache就会自动加载mod_bw.so这个模块了,我们就可以在<VirtualHost></VirtualHost>配置节里面添加相关的配置了。

 BandwidthModule On
 ForceBandWidthModule On
 Bandwidth all 1024000
MinBandwidth all 50000 #每个客户端最高速度可达50KB
LargeFileLimit * 500 50000
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

配置完了需要重启apache,但重启有时会报错。

这种可以把mod_bw.c修改一下就可以了。如下:
 
/* Compatibility for APR < 1 */
 
#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
 
把这几行代码全部注释掉即可。把*/移到最下面:
 
/* Compatibility for APR < 1 
 
#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
 
*/
然后重新编译,重启一下apahce就可以正常了。
 
最后编辑:
作者:admin
这个作者貌似有点懒,什么都没有留下。