在XAMPP环境下运行Apache时,若不做任何防护,恶意用户可通过高频请求让服务器资源耗尽,形成DDOS式拒绝服务。借助Apache的mod_evasive模块与部分安全增强插件,可以有效缓解此类问题。

一、启用mod_evasive模块
XAMPP默认未开启mod_evasive,需要先确认模块文件是否存在于modules/mod_evasive.so。接着在Apache配置文件httpd.conf中加载并配置。
1. 修改httpd.conf
找到XAMPP安装目录下的apache/conf/httpd.conf,在末尾加入如下内容:
# 加载防DDOS模块
LoadModule evasive20_module modules/mod_evasive.so
<IfModule mod_evasive20.c>
# 同一IP在窗口期内最大请求数
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
# 可选:记录日志
DOSLogDir "/xampp/apache/logs/mod_evasive"
</IfModule>
2. 参数说明
- DOSPageCount:单页面在间隔内允许的最大请求数。
- DOSSiteCount:全站资源在间隔内允许的最大请求数。
- DOSBlockingPeriod:触发后封禁IP的秒数。
二、使用安全增强插件
除模块外,也可在XAMPP中部署轻量安全插件,例如通过PHP脚本限制访问频率。
1. 简单访问频率限制代码
在入口文件顶部加入以下PHP逻辑:
<?php
// 使用文件记录IP访问次数
$ip = $_SERVER['REMOTE_ADDR'];
$file = sys_get_temp_dir() . '/acc_' . md5($ip);
$now = time();
$limit = 100; // 每60秒最多100次
$data = file_exists($file) ? unserialize(file_get_contents($file)) : array();
$data = array_filter($data, function($t) use ($now) { return $t > $now - 60; });
if (count($data) >= $limit) {
http_response_code(429);
exit('Too Many Requests');
}
$data[] = $now;
file_put_contents($file, serialize($data));
?>
三、其他加固建议
| 项目 | 建议 |
|---|---|
| 关闭目录浏览 | 在httpd.conf设置Options -Indexes |
| 隐藏版本号 | 设置ServerTokens Prod与ServerSignature Off |
| 定期更新 | 保持XAMPP与Apache为最新稳定版 |
注意:以上措施适用于中小型站点或测试环境,面对大规模分布式DDOS仍需结合云端清洗服务。
四、验证配置
重启XAMPP中的Apache,使用浏览器快速刷新页面超过限制次数,若返回阻塞或429状态,说明防DDOS配置生效。
XAMPPApachemod_evasive修改时间:2026-07-26 03:18:13