一、前期准备:配置Nginx日志格式与收集
要有效监控异常流量,首先需确保Nginx日志包含足够的信息。修改Nginx配置文件(如/etc/nginx/nginx.conf或站点配置文件),定义结构化的日志格式(推荐使用combined格式或自定义格式),包含关键字段:客户端IP($remote_addr)、请求时间($time_local)、请求方法与路径($request)、状态码($status)、响应时间($request_time、$upstream_response_time)、请求头(如$http_user_agent、$http_referer)。同时,开启日志轮转(使用logrotate工具),避免日志文件过大影响分析效率。
二、核心监控维度:聚焦异常流量特征 异常流量通常具备以下特征,需逐一排查:
/admin.php、/wp-login.php)、频繁访问敏感页面(如/api/userinfo),或请求参数包含SQL注入、XSS攻击特征(如' OR 1=1 --);User-Agent为“sqlmap”“Nmap”等扫描工具标识),或Referer字段为空/指向可疑域名。三、常用工具:实现高效分析与实时监控
基础命令行工具:
使用tail -f /var/log/nginx/access.log实时查看日志输出;通过grep、awk、sort组合命令快速统计异常:
grep " 200 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10(列出Top10请求IP);grep " 404 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr;grep -i "bot" /var/log/nginx/access.log(筛选包含“bot”的请求)。开源可视化工具:
实时监控与告警工具:
top命令的实时监控工具,按请求量、响应时间等指标排序,快速定位高负载请求;四、预警与响应:闭环处理异常流量
设置阈值告警:根据业务特点定义合理阈值(如单IP每分钟请求不超过50次、404错误每小时不超过100次),通过监控工具(如Prometheus)设置告警规则,当超过阈值时自动通知管理员(邮件、钉钉、企业微信等)。
自动封禁恶意IP:使用Fail2Ban工具,结合Nginx日志中的异常模式(如高频404请求、非法User-Agent),自动将恶意IP加入防火墙黑名单(如iptables),阻止其继续访问;也可通过Nginx的deny指令手动封禁IP(如deny 192.168.1.1;)。
持续优化与审计:定期审查日志分析结果,调整阈值以适应业务变化(如促销活动期间流量激增);结合Web应用防火墙(WAF)过滤恶意请求(如SQL注入、XSS攻击);定期更新Nginx及依赖组件,修补已知安全漏洞。