商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Apache2中如何限制访问频率

Apache2中如何限制访问频率

  发布于2026-07-08 阅读(0)

扫一扫,手机访问

在Apache2里限制访问频率,其实是个挺常见的需求。尤其是当你发现网站流量突然异常,或者后台日志里频繁出现某个IP的疯狂请求时,你肯定想过:能不能直接给这些“捣乱分子”设个门槛?

Apache2中如何限制访问频率

答案是肯定的。Apache2里有一个很成熟的防攻击模块——mod_evasive,专门用来干这个。它的核心逻辑很简单:记录每个IP的访问行为,一旦触发了你设定的阈值,就自动拉黑一段时间。下面我们就直接上手,看看怎么装、怎么配、怎么用。

安装mod_evasive

不同发行版的安装方式大同小异。以Debian/Ubuntu为例,一行命令搞定:

sudo apt-get update
sudo apt-get install libapache2-mod-evasive

如果是CentOS/RHEL系列,用yum或dnf装对应的包就行。装完之后,别忘了启用模块:

sudo a2enmod evasive

配置文件的路径,不同系统略有差异。Debian/Ubuntu通常是在/etc/apache2/apache2.conf/etc/apache2/mods-enabled/evasive.conf里;CentOS/RHEL则一般在/etc/httpd/conf/httpd.conf。找到配置文件后,把下面这段内容加进去:


    DOSHashTableSize   3097
    DOSPageCount       2
    DOSSiteCount       50
    DOSPageInterval    1
    DOSSiteInterval    1
    DOSBlockingPeriod  10

这几个参数,每个都有它的用途。简单解释一下:

  • DOSHashTableSize:哈希表大小,用来存储IP和访问记录。数值越大,能处理的并发请求越多,但内存消耗也会相应增加。3097是一个比较稳妥的起步值。
  • DOSPageCount:在DOSPageInterval秒内,同一个IP可以请求同一个页面的最大次数。超过这个数,就会被暂时“请出”。
  • DOSSiteCount:在DOSSiteInterval秒内,同一个IP可以请求整个站点的最大次数。这个参数主要防止单IP对整个站点的全局扫描。
  • DOSPageInterval:页面请求统计的时间窗口,单位是秒。
  • DOSSiteInterval:站点请求统计的时间窗口,单位是秒。
  • DOSBlockingPeriod:拉黑时长,单位是秒。被限制的IP在这段时间内无法访问你的站点。

上面的配置,通俗点理解就是:同一个IP在1秒内请求同一个页面超过2次,或者1秒内请求整个站点超过50次,就会被拉黑10秒。当然,这些数值只是参考,实际生产环境中,你需要根据自己网站的流量特征来调整。比如,如果是高并发接口,DOSPageCount可以适当调高,但别放得太松,不然就失去防护意义了。

配置完成后,重启Apache使之生效:

sudo systemctl restart apache2

到此为止,mod_evasive就已经开始工作了。它会默默地记录每个IP的访问频次,一旦触雷,立刻拦截。整个过程不需要额外的人工干预,相当于给你的网站加了一层自动防护网。

本文转载于:https://www.yisu.com/ask/20930636.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注