最直接有效的临时封禁手段是修改nginx配置用deny指令封禁网段,需写入独立conf文件、正确cidr格式、语法验证后reload生效,并事后及时清理。

遇到突发网络攻击时,最直接有效的临时封禁手段就是修改 Nginx 配置文件,用 deny 指令封禁整个网段,无需安装额外组件、不依赖脚本或外部服务,改完即生效。
在主配置或独立 conf 文件中添加网段封禁规则
推荐将封禁规则写入独立文件(如 /etc/nginx/conf.d/block_segment.conf),避免污染主配置:
- 创建并编辑该文件:
sudo nano /etc/nginx/conf.d/block_segment.conf - 写入要封的网段,格式严格为:
deny 192.168.100.0/24;deny 203.0.113.0/28; - 确保该文件被主配置引用:在 /etc/nginx/nginx.conf 的
http{}块内加入include /etc/nginx/conf.d/block_segment.conf;
必须执行的验证与生效步骤
封禁不是写完就完事,漏掉任一环节都可能导致服务中断或规则不生效:
- 先运行
nginx -t测试语法——IP 段写错(如少个点、掩码超范围)会直接报错 - 确认输出
syntax is ok和test is successful后,再执行nginx -s reload - 不要用
systemctl restart nginx,reload 是平滑重载,旧连接不受影响 - 封禁后可用
curl -I -x "" http://yoursite.com模拟目标网段请求,应返回403 Forbidden
封禁网段的写法要点与常见错误
网段格式看似简单,但实际容易出错。注意以下细节:
- 掩码必须是标准 CIDR 表示,如
/24、/16、/28,不能写成255.255.255.0 - 起始 IP 必须是该网段的网络地址(如
192.168.100.0/24正确,192.168.100.1/24虽然 Nginx 可能接受,但语义错误且易引发混淆) - 多个网段分行写,每行一个
deny,末尾分号不可省略 - 若需“只放行某几个内网段,其余全拒”,可在同一 location 内按顺序写:
allow 10.0.0.0/8;allow 172.16.0.0/12;deny all;
攻击缓解后如何安全清理
临时封禁只是应急,事后需及时清理,避免误伤或遗忘:
- 清空 block_segment.conf 内容,或注释掉相关行(加
#),再nginx -t && nginx -s reload - 不要直接删文件——如果主配置里还保留
include,Nginx 会因文件不存在而加载失败 - 建议在文件开头加注释说明用途和时间,例如:
# Auto-blocked during CC attack on 2026-07-21 22:15 - 后续可将高频攻击网段纳入长期黑名单机制(如 geo+map 或日志联动脚本),避免反复手动操作











