Apache限制IP并发数和流量控制的方法
2023-06-13 09:15:31 时间
本文章来给各位同学总结一下APACHE中限制IP连接数与IP并发数和流量控制实现方法,如果只限制连接数据我们可以直接使用limit,如果要限制其它的需要使用其它第三方模块了
使用mod_limitipconn模块限制IP并发连接数
安装:
wgethttp://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 tarjxvfmod_limitipconn-0.24.tar.bz2 cdmod_limitipconn-0.24 /usr/local/apache2/bin/apxs-c-imod_limitipconn.c
编辑httpd.conf
ExtendedStatusOn LoadModulelimitipconn_modulemodules/mod_limitipconn.so <ifModulemod_limitipconn.c> <location/>#对应根目录 MaxConnPerIP5#最大并发数为5 NoIPLimitimage/*#对图片不做限制 </location> <location/test>#对根目录下的test目录做限制 MaxConnPerIP2#最大并发数为2 </location> </ifModule>
如果想限制虚拟主机的ip并发连接数,可以修改extra/httpd-vhost.conf把IfModulemod_limitipconn.c这一段复制到Virtualhost中就可以了。
测试:
测试很简单,把最大连接数调小一点,随便一个浏览器访问页面,然后按着F5,让页面不断刷新,一下就可以弹出503错误
使用mod_bandwidth模块限制带宽
mod_bandwidth可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。
安装:
wgethttp://bwmod.sourceforge.net/files/mod_bw-0.7.tgz tarzxvfmod_bw-0.7.tgz cdmod_bw /usr/local/apache2/bin/apxs-c-imod_bw.c
编辑httpd.conf配置文件:
LoadModulebw_modulemodules/mod_bw.so <virtualHost*:80> ServerNamevhost1.cszhi.com DocumentRoot/var/www/vhost1 BandwidthModuleOn ForceBandWidthModuleOn Bandwidthall1024000 MinBandwidthall50000#每个客户端最高速度可达50KB LargeFileLimit*50050000 MaxConnectionall6 </virtualHost>
其它参数事例说明,详细的见源码包里的mod_bw.txt:
BandWidthlocalhost0#对localhost不限速 BandWidth192.168.1.5102400#对192.168.1.5限速为100KB BandWidth“u:^Mozilla(.*)”10240#用mozilla时限速10KB BandWidth“u:wget”102400#如果用wget下载时限速10KB MinBandWidthall-1#保证每个客户端最高速度可达10KB LargeFileLimit.jpg10010240#jpg文件超过100KB,限速10KB #下面的510挺好,如果不设置,apache自己会报错,就根报404差不多,页面非常的丑 ErrorDocument510/exceed_speed.html BandWidthError510 MaxConnectionall10#所有ip最大连接数为10 MaxConnection192.168.1.55#192.168.1.5最大连接数为5
测试:
使用mod_bw.so模块前:
使用mod_bw.so模块后:
安装过程中可能出现的问题:
1、添加完mod_bw.so模块,重启apache时出现错误:
[root@vpshttpd]#/etc/init.d/httpdrestart Stoppinghttpd:[FAILED] Startinghttpd:httpd:Syntaxerroronline203of/etc/httpd/conf/httpd.conf:Cannotload/etc/httpd/modules/mod_bw.sointoserver:/etc/httpd/modules/mod_bw.so:undefinedsymbol:apr_atomic_cas [FAILED]
修改一下mod_bw.c就可以:
#ifdefAPR_MAJOR_VERSION//添加这行 #if(APR_MAJOR_VERSION<1) #defineapr_atomic_inc32apr_atomic_inc #defineapr_atomic_dec32apr_atomic_dec #defineapr_atomic_add32apr_atomic_add #defineapr_atomic_cas32apr_atomic_cas #defineapr_atomic_set32apr_atomic_set #endif #endif//添加这行
重新编译:
/usr/local/apache2/bin/apxs-c-imod_bw.c
2、如果服务器没有安装apxs,可以参照以下方法安装:
apxs是一个为ApacheHTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。
输入命令查看是否有httpd-devel这个包,如果没有需要安装
rpm-qa|grephttpd yum-yinstallhttpd-devel
相关文章
- 大数据Apache Druid(五):Druid批量数据加载
- 快收藏!优化 Apache Flink 应用程序的 7 个技巧!
- Apache knox_apache发生服务特定错误1
- centos8安装Apache httpd2.4.37的web服务器详细步骤
- 教你使用Apache搭建Http下载服务器
- java 使用apache的net包ftp上传文件详解编程语言
- 结合开发,推动进步: Apache与MySQL的协作(apache和mysql)
- 搭配Apache MySQL:超强联手服务器助力(apache和mysql)
- 如何使用Apache控制命令检查它的模块是否已经启用或加载
- 使用Apache和MSSQL构建强大的数据库系统(apache mssql)
- 以Apache、MySQL和PHP组成的最强技术栈(apache mysql php)
- Apache中利用mod_rewrite实现防盗链
- Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
- Windows下Apache应用环境塔建方法
- 让apache也支持asp环境的方法
- Apache设置目录禁止访问