首页 帮助中心 帮助中心 香港服务器Apache配置中怎么限制访问频率
香港服务器Apache配置中怎么限制访问频率
时间 : 2025-03-07 14:17:30 编辑 : 华纳云 阅读量 : 24

  在遇到恶意请求或者流量过大的问题时,通过在Apache服务器上限制访问频率,可以有效的的防止ddos攻击或者资源耗尽的问题。香港服务器Apache配置模块用来实现访问频率限制的大致有三种,分别是mod_ratelimit、mod_security和mod_evasive。

  mod_ratelimit是Apache官方的一个模块,主要用于限制带宽,但也可以用来控制请求速率,配置相对简单,适合基础需求。如果你只是需要简单的频率限制,mod_ratelimit可能足够。

  mod_evasive更专注于防御DoS攻击,能根据IP地址限制并发请求和频率,功能更全面。如果你需要更全面的防护,mod_evasive会更合适。

  mod_security作为WAF,功能强大,可以通过规则实现复杂的频率限制,但配置可能更复杂。如果已经有使用mod_security的经验,可能更倾向于用它的规则来实现。

  在基于Debian的系统上,安装这些模块可能需要使用apt-get命令,而在CentOS上则是yum命令,下面我们将针对这3种方法来详细介绍。

  方法一、使用mod_ratelimit

  启用mod_ratelimit,确保模块已加载。(在Ubuntu/Debian系统重默认可能未启用):

  sudo a2enmod ratelimit
  sudo systemctl restart apache2

  配置虚拟主机或目录规则,在Apache配置文件(如 /etc/apache2/sites-available/000-default.conf)中添加:

  <VirtualHost *:80>
      # 限制特定目录(例如 /api/)的请求频率
      <Location "/api/">
          SetOutputFilter RATE_LIMIT
          # 限制每秒最多 10 个请求,突发允许 20 个
          RateLimit 10 20
      </Location>
  </VirtualHost>

  RateLimit [平均速率]/[突发速率]:例如 10 20 表示平均每秒 10 个请求,突发允许 20 个。

  重启Apache,命令如下:

  sudo systemctl restart apache2

  方法二、使用 mod_evasive

  安装 mod_evasive

  Ubuntu/Debian:

  sudo apt install libapache2-mod-evasive
  sudo a2enmod evasive

  CentOS/RHEL:

  sudo yum install mod_evasive

  配置模块参数,编辑配置文件(如 /etc/apache2/mods-enabled/evasive.conf):

  <IfModule mod_evasive20.c>
      DOSHashTableSize 3097
      DOSPageCount 2       # 同一页面每秒最大请求数
      DOSSiteCount 50      # 同一 IP 对全站每秒最大请求数
      DOSPageInterval 1    # 页面计数时间间隔(秒)
      DOSSiteInterval 1    # 全站计数时间间隔(秒)
      DOSBlockingPeriod 60 # 违规 IP 被封禁的时间(秒)
      DOSEmailNotify admin@example.com # 触发时发送邮件通知(可选)
  </IfModule>

  重启 Apache

  sudo systemctl restart apache2

  测试,使用工具(如 ab)模拟请求:

  ab -n 100 -c 10 http://your-domain.com/api/

  查看日志 /var/log/apache2/mod_evasive.log 确认拦截记录。

  方法三、使用 mod_security

  通过 ModSecurity 的规则限制请求频率(需安装 OWASP Core Rule Set)。

  安装 ModSecurity

  sudo apt install libapache2-mod-security2
  sudo a2enmod security2

  配置频率限制规则在 ModSecurity 规则文件(如 /etc/modsecurity/modsecurity.conf)中添加:

  SecRuleEngine On
  SecAction "id:1000,phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},setvar:ip.requests=+1"
  SecRule IP:REQUESTS "@gt 10" "id:1001,phase:5,deny,status:429,log,msg:'请求频率过高'"

  @gt 10:限制每秒最多 10 个请求。

  status:429:返回 HTTP 429(Too Many Requests)。

  重启Apache

  sudo systemctl restart apache2

  注意事项:

  合理设置阈值,根据业务需求调整频率限制,避免误伤正常用户。

  日志监控,定期检查 Apache 日志(/var/log/apache2/access.log)和模块日志(如 mod_evasive)。

  合法流量处理,对搜索引擎或 API 合作伙伴设置白名单:

  除了上述讲到的三种方法之外,其实我们还有其他工具可以使用,比如Fail2Ban,通过结合Apache日志可以自动封禁恶意IP,这种更适合动态防御。在比较复杂的场景下,可以结合ModSecurity或Fail2Ban来限制访问频率,防御恶意请求,从而提升香港服务器稳定性

华纳云 推荐文章
香港服务器怎么配置Python多线程环境 Apache配置错误:请求内部重定向次数超过最大限制(10次)的排查与修复 香港服务器怎么搭建docker加速器? 香港服务器常见CPU型号有哪些 香港服务器MySQL创建表格时要注意哪些 香港服务器IP遭遇封禁的应急处理方法 Linux中查找MySQL、PHP和Apache配置文件的方法 查看香港服务器具体配置参数的命令总集 香港服务器使用SSL连接失败排查步骤和解决方法 香港服务器硬盘故障有哪些原因?
客服咨询
7*24小时技术支持
技术支持
渠道支持