插件窝 干货文章 Linux apache怎么限制并发连接和下载速度

Linux apache怎么限制并发连接和下载速度

限制 IfModule 配置 模块 953    来源:    2025-04-27

Linux Apache 并发连接和下载速度限制配置

在Apache中限制并发连接和下载速度可以通过多种模块实现,以下是详细的配置方法:

一、限制并发连接数

1. 使用 mod_limitipconn 模块

这个模块可以限制每个IP的并发连接数。

安装和配置步骤:

  1. 安装模块(Ubuntu/Debian):

    sudo apt-get install libapache2-mod-limitipconn
    
  2. 启用模块:

    sudo a2enmod limitipconn
    
  3. 配置(在虚拟主机配置或.htaccess中):

    <IfModule mod_limitipconn.c>
       <Location />
           MaxConnPerIP 3
           # 排除图片等静态资源
           NoIPLimit image/*
       </Location>
    </IfModule>
    

2. 使用 mod_evasive 模块(更高级的防DDoS模块)

  1. 安装(Ubuntu/Debian):

    sudo apt-get install libapache2-mod-evasive
    
  2. 配置(/etc/apache2/mods-enabled/evasive.conf):

    <IfModule mod_evasive20.c>
       DOSHashTableSize    3097
       DOSPageCount       2
       DOSSiteCount       50
       DOSPageInterval    1
       DOSSiteInterval    1
       DOSBlockingPeriod  10
    </IfModule>
    

二、限制下载速度

使用 mod_ratelimit 模块

  1. 启用模块:

    sudo a2enmod ratelimit
    
  2. 配置示例(在虚拟主机配置中):

    <IfModule mod_ratelimit.c>
       <Location "/downloads/">
           SetOutputFilter RATE_LIMIT
           SetEnv rate-limit 100  # 限制为100KB/s
       </Location>
    </IfModule>
    

使用 mod_bw 模块(带宽限制)

  1. 安装(可能需要从源码编译):

    sudo apt-get install libapache2-mod-bw
    
  2. 配置示例:

    <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>

四、注意事项

  1. 修改配置后需要重启Apache生效:

    sudo systemctl restart apache2
    # 或
    sudo service apache2 restart
    
  2. 这些限制可能会影响用户体验,请根据实际需求调整数值。

  3. 对于高流量网站,建议在前端使用Nginx或专门的负载均衡器进行限速和控制。

  4. 监控效果可以使用netstat -anp | grep httpd | wc -l查看当前连接数,或使用工具如iftop监控带宽使用情况。