# nginx 限流 + 扫描器拦截 (P1-2, 2026-08-10) ## 概述 平台 nginx 已加固,三档限流 + 扫描器指纹拦截 + 自动黑名单,降低被攻击 / 资源耗尽风险。 ## 三档速率限制 | 区域 | 速率 | burst | 用途 | |------|------|-------|------| | api_limit (zone 10m) | 30 r/s | 60 nodelay | /app/* 普通 API | | admin_limit (zone 10m) | 5 r/s | 10 nodelay | /app/api/admin/* / market/admin/* / internal/* | | login_limit (zone 1m) | 1 r/s | 5 nodelay | /app/api/auth/login / auth/register / casdoor/* | ## 扫描器拦截 (return 444) - 路径:/wp-admin/ /wp-login /xmlrpc.php /administrator/ /phpmyadmin/ /.env /.git/ /actuator/* /server-status /server-info /elmah.axd /shell.php /.well-known/security - UA:zgrab nmap masscan nikto sqlmap acunetix nessus wpscan dirbuster gobuster ffuf hydra metasploit Havij TSWeb MJ12bot AhrefsBot SemrushBot DotBot PetalBot Aspera HTTrack Scrapy libwww - 客户端 SDK:curl/* wget/* python-requests/* 等自动化库会关闭 ## 自动黑名单(block_ip.py) /app/backend/nginx/block_ip.py 每 5 分钟跑一次,识别以下模式自动 deny 24h: - 单 IP 5min 内 >= 6 次 444 - 单 IP 5min 内 >= 20 次 4xx - 单次 UA 匹配扫描器 - 单次路径匹配扫描器 黑名单持久化到 /etc/nginx/blocked_ips.conf,自动 nginx -s reload 生效。 ## 部署 - 配置文件:容器内 /etc/nginx/conf.d/aiflow.conf - 重载命令:docker exec qihu-aiflow sh -c "nginx -t && nginx -s stop && nginx" - 真实用户浏览器访问**不受影响**(正常 Mozilla UA),只拦自动化 / 扫描器。 ## 已知限制 - 仅 nginx 层面拦截,无法 TCP-level SYN flood 防护(需 CDN/WAF) - 容器内 iptables 受限,所以未装 fail2ban(改用 nginx 黑名单等价物) - 客户端 SDK 默认 deny,server-to-server 调用需在代码层绕过 (走 app/core/llm_router.py 等内部路径) ## 验证 - 30+ 用例验证(health / index / api / 限流 / 拦截 / 黑名单 reload) - 实际首跑封禁 222.128.55.233 (4xx=31) 和 120.55.61.72 (UA=zgrab)