在Apache中限制并发连接和下载速度可以通过多种模块实现,以下是详细的配置方法:
这个模块可以限制每个IP的并发连接数。
安装和配置步骤:
安装模块(Ubuntu/Debian):
sudo apt-get install libapache2-mod-limitipconn
启用模块:
sudo a2enmod limitipconn
配置(在虚拟主机配置或.htaccess中):
<IfModule mod_limitipconn.c>
<Location />
MaxConnPerIP 3
# 排除图片等静态资源
NoIPLimit image/*
</Location>
</IfModule>
安装(Ubuntu/Debian):
sudo apt-get install libapache2-mod-evasive
配置(/etc/apache2/mods-enabled/evasive.conf):
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
启用模块:
sudo a2enmod ratelimit
配置示例(在虚拟主机配置中):
<IfModule mod_ratelimit.c>
<Location "/downloads/">
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100 # 限制为100KB/s
</Location>
</IfModule>
安装(可能需要从源码编译):
sudo apt-get install libapache2-mod-bw
配置示例:
<IfModule mod_bw.c>
BandwidthModule On
ForceBandwidthModule On
# 全局限制
Bandwidth all 1024000 # 限制为1Mbps
# 特定目录限制
<Location "/media/">
Bandwidth 256000 # 限制为250Kbps
</Location>
# 特定IP限制
Bandwidth 192.168.1.100 512000 # 限制该IP为500Kbps
</IfModule>
<VirtualHost *:80>
ServerName example.com
# 并发连接限制
<IfModule mod_limitipconn.c>
<Location "/">
MaxConnPerIP 5
NoIPLimit image/* css/* js/*
</Location>
</IfModule>
# 下载速度限制
<IfModule mod_ratelimit.c>
<Location "/downloads/">
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200 # 200KB/s
</Location>
</IfModule>
# 带宽限制
<IfModule mod_bw.c>
BandwidthModule On
Bandwidth all 1024000 # 全局1Mbps限制
</IfModule>
</VirtualHost>
修改配置后需要重启Apache生效:
sudo systemctl restart apache2
# 或
sudo service apache2 restart
这些限制可能会影响用户体验,请根据实际需求调整数值。
对于高流量网站,建议在前端使用Nginx或专门的负载均衡器进行限速和控制。
监控效果可以使用netstat -anp | grep httpd | wc -l
查看当前连接数,或使用工具如iftop监控带宽使用情况。