在Linux系统中运行的Apache服务,若没有合理的并发连接和下载速度限制,很容易出现单个IP发起大量请求占满服务器资源,或者部分用户高速下载大文件导致带宽被耗尽的情况,影响其他正常用户的访问体验。我们可以通过Apache的扩展模块来实现这两方面的限制。

限制单IP并发连接数:mod_limitipconn模块
mod_limitipconn是Apache的一个第三方模块,用于限制每个IP地址同时建立的连接数,适合防止单个客户端发起过多请求消耗服务器资源。
1. 安装mod_limitipconn模块
如果是通过包管理器安装的Apache,可以直接安装对应的模块包,以CentOS系统为例:
# 安装epel源(如果未安装) yum install -y epel-release # 安装mod_limitipconn模块 yum install -y mod_limitipconn
如果是源码编译安装的Apache,需要下载模块源码进行编译安装:
# 下载模块源码 wget https://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 # 解压 tar -jxvf mod_limitipconn-0.24.tar.bz2 cd mod_limitipconn-0.24 # 编译安装,注意替换Apache安装路径 /usr/local/apache/bin/apxs -c -i mod_limitipconn.c
2. 配置mod_limitipconn
安装完成后,需要在Apache的配置文件中添加模块配置,通常可以在httpd.conf或者conf.d/limitipconn.conf中添加以下内容:
# 加载模块
LoadModule limitipconn_module modules/mod_limitipconn.so
# 全局配置或者针对指定目录配置
<IfModule mod_limitipconn.c>
# 针对根目录生效
<Location />
# 开启并发连接限制
MaxConnPerIP 10
# 排除图片等静态资源的限制,避免正常访问受影响
NoIPLimit image/gif image/jpeg image/png text/css application/javascript
</Location>
</IfModule>
上述配置中,MaxConnPerIP 10表示每个IP最多同时建立10个连接,你可以根据实际业务需求调整这个数值。
3. 验证配置生效
修改配置后重启Apache服务,然后使用多个并发请求测试,比如用ab工具发起测试:
# 发起20个并发请求,总共100个请求 ab -n 100 -c 20 http://你的服务器IP/
如果配置生效,超过限制的请求会返回503错误,说明并发限制已经正常工作。
限制下载速度:mod_bandwidth模块
mod_bandwidth模块用于限制客户端的下载速度,避免单个用户高速下载大文件占用过多带宽。
1. 安装mod_bandwidth模块
该模块同样可以通过源码编译安装,步骤如下:
# 下载模块源码 wget https://bwmod.sourceforge.net/files/mod_bandwidth-2.0.6.tar.gz # 解压 tar -zxvf mod_bandwidth-2.0.6.tar.gz cd mod_bandwidth-2.0.6 # 编译安装,替换Apache安装路径 /usr/local/apache/bin/apxs -c -i mod_bandwidth.c
2. 配置mod_bandwidth
首先需要在Apache配置文件中加载模块,并创建带宽限制的临时目录:
# 创建临时目录 mkdir -p /var/www/bandwidth_tmp chown -R apache:apache /var/www/bandwidth_tmp
然后在Apache配置文件中添加以下配置:
# 加载模块
LoadModule bandwidth_module modules/mod_bandwidth.so
<IfModule mod_bandwidth.c>
# 开启带宽限制
BandWidthModule On
# 设置临时文件目录
BandWidthDataDir /var/www/bandwidth_tmp
# 默认不限制带宽
BandWidth all 0
# 针对指定目录限制下载速度为100KB/s,替换为你自己的下载目录
<Directory /var/www/html/download>
# 单IP最大下载速度100KB/s
BandWidth 192.168.0.1/24 102400
# 最大并发连接数5个,超过的连接排队等待
MaxConnection 5
</Directory>
</IfModule>
配置中的102400表示102400字节每秒,也就是100KB每秒,你可以根据带宽总量调整这个数值。
3. 验证配置生效
重启Apache服务后,从配置的下载目录下载一个较大的文件,使用下载工具查看下载速度,若速度被限制在设置的数值附近,说明配置生效。
注意事项
- 修改Apache配置后一定要重启服务才能生效,重启前可以用
apachectl -t检查配置语法是否正确。 - 并发连接限制和下载速度限制可以结合使用,同时保障连接数和带宽资源不被滥用。
- 如果使用了CDN或者反向代理,获取到的客户端IP可能是代理IP,此时需要配置Apache获取真实客户端IP,否则限制会作用在代理服务器上。
Apache并发连接限制下载速度限制mod_limitipconnmod_bandwidth修改时间:2026-07-08 22:36:26