在开始配置之前,必须确保服务器上已经安装了Nginx。本指南基于Nginx主流版本编写,所有指令均兼容Nginx 1.18及以上版本。首先登录服务器,执行以下命令检查Nginx版本及运行状态:
1. 检查Nginx版本
```bash nginx -v ```2. 检查配置文件语法(确保当前环境无误)
```bash nginx -t ```如果输出显示 syntax is ok 且 test is successful,则环境正常。接下来,我们需要找到Nginx的主配置文件,通常路径为 /etc/nginx/nginx.conf。建议在修改前先备份原文件:
大量的垃圾流量和恶意扫描器通过特定的User-Agent特征进行识别,例如Python脚本、恶意爬虫或SEO扫描工具。我们可以利用Nginx的 map 指令高效定义黑名单,并在Server块中进行拦截。
打开 ,在 http {} 块内的任意位置(建议放在 http {} 的起始部分)添加以下配置。这段代码定义了一个名为 $block_user_agent 的变量,当请求头中的User-Agent匹配到括号内的关键词时,该变量值变为1。
注意: ~ 表示不区分大小写的正则匹配。上述列表包含了常见的恶意工具特征。如果你的业务需要允许百度或谷歌爬虫,请勿直接使用通用的 ~spider,而是将其替换为具体的恶意爬虫名称,例如 ~badbot。
定义好变量后,需要在具体的网站配置 server {} 块中应用拦截逻辑。找到你需要防护的 server 配置段,添加以下 if 判断:
垃圾流量往往伴随着高频请求,试图耗尽服务器资源。Nginx的 limit_req_zone 模块基于漏桶算法,可以精准限制单个IP的请求速率。
在 http {} 块中添加限流区域定义。这行代码表示使用客户端IP地址($binary_remote_addr)作为键,开辟一个10MB的内存区域(约可存储16万个IP状态),限制每个IP的请求速率为每秒1次(rate=1r/s)。
进入目标 server {} 或具体的 location {} 块中应用限流。通常建议在 location / 中应用。
参数详解: burst=5 允许用户在短时间内突发发送5个请求放入队列,如果开启 nodelay,则这5个请求会被立即处理,但后续请求会被直接拒绝;如果不加 nodelay,Nginx会平滑处理这些请求。对于拦截垃圾流量,建议加上 nodelay 以便快速拒绝。
攻击者经常在URL参数中注入恶意代码(如 eval, base64)或携带大量垃圾SEO关键词(如 ? 后接长串乱码)。通过检测 $query_string 可以直接阻断此类请求。
在 server {} 块中添加以下规则:

操作细节: 使用正则表达式匹配时,特殊字符如左括号 ( 需要使用反斜杠 \ 转义。上述规则会直接拦截SQL注入尝试和常见的Webshell特征。
对于持续攻击的固定IP,直接封禁是最有效的方法。为了避免Nginx主配置文件过于臃肿,我们将黑名单独立存储。
在Nginx配置目录下创建一个专门存放黑名单的文件:
```bash touch /etc/nginx/blockip.conf ```编辑该文件,按如下格式添加IP地址:
```nginx 单个IP封禁 deny 192.168.1.100; 封禁整个C段网段 deny 10.0.0.0/8; 其他所有允许 allow all; ```在 http {} 块、server {} 块或 location {} 块中引入该文件。通常建议放在 server {} 块的顶部,使其最先生效:
以后需要封禁新IP时,只需编辑 /etc/nginx/blockip.conf 并重载配置即可,无需动主文件。
以下是一个整合了上述所有功能的 server 块完整示例,你可以直接参考并替换原有的配置:
配置修改完成后,必须进行语法检查和重载,确保所有规则生效且不会导致服务中断。
1. 测试配置文件语法
```bash nginx -t ```如果提示 syntax is ok,则说明配置无误。如果报错,请根据行号检查拼写或括号匹配情况。
2. 平滑重载Nginx
```bash nginx -s reload ```3. 验证拦截效果
使用 curl 命令模拟恶意UA进行测试,如果返回 403 Forbidden,则证明规则生效:
预期输出应包含:
```text HTTP/1.1 403 Forbidden ... ```至此,一套涵盖UA识别、频率限制、参数过滤和IP封禁的网站垃圾流量拦截系统已部署完成。这套方案无需安装额外软件,完全依赖Nginx原生能力,资源消耗极低,能够有效拦截绝大多数自动化垃圾流量和恶意攻击。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图