大型动态系统中,如果客户端不顾缓存设置,大并发量的请求文件,系统的负担会很重,而普通用户的浏览带宽会被这些大并发量客户端浪费和占用,为了防止系统过载,可以通过相应的软件进行限制,我们就是要使用mod_limitipconn模块帮助Apache2实现单一IP地址连接数限制。
以下过程以FreeBSD 6.2环境为准:
1、确保你的Web系统正常运行;
2、安装mod_limitipconn(如果使用的Apache 1.3.x请使用/usr/ports/www/mod_limitipconn):
# cd /usr/ports/www/mod_limitipconn2
# make install clean
3、设置Apache2(我的Apache2是DSO模式):
# 必须启用mod_status,并设置了以下参数
ExtendedStatus On
LoadModule status_module libexec/apache2/mod_status.so
LoadModule limitipconn_module libexec/apache2/mod_limitipconn.so
MaxConnPerIP 3
最后,可以使用下载工具测试,我使用了FreeBSD下的Wget工具,在同一台远程机器上,开启4个Wget抓取文件,你如果看到第四个链接(我设置的上限是3,具体多少个和你的设置相关)被拒绝,提示503错误,说明mod_limitipconn起作用了。
已知的问题:
1、对于通过代理服务器浏览的用户,系统会认为是同一IP地址,同样会做出限制。
2、当前的mod_limitipconn模块对所有IP地址一视同仁,还不能区别对待不同的IP地址。