作为 Java 后端开发,我们维护的用户管理集群(Nginx+3 台 SpringBoot 服务)之前踩了个大坑 —— 某晚突然收到告警,服务器 CPU 飙升到 98%,日志里全是 “/api/user/query” 的异常请求,参数带着奇怪的特殊字符,数据库连接池直接耗尽,服务瘫了 1 小时。试了加参数校验、改 Nginx 配置都没用,最后用雷池 WAF 的免费方案,不仅拦住恶意请求,还没花一分钱,今天分享整个踩坑与解决过程,Java 后端能直接复用。
一、Java 集群的恶意请求坑,之前的解决方法都不管用
我们的集群是 “Nginx 反向代理 + SpringBoot+MySQL”,日均请求 20 万次,之前遇到的问题很具体:
- 参数攻击防不住:攻击者用 “userID=1' or 1=1 --” 这类变形参数调用接口,SpringBoot 的参数校验没拦住,导致 MySQL 报语法错误,连接池占满;
- 高频请求扛不住:同一 IP 每分钟调用 500 次查询接口,Nginx 的简单限流按 IP 拦截,又会误拦正常用户;
- 改代码不现实:集群有 10 多个接口,每个都加复杂校验要花一周,还影响现有功能。
一开始试了两款免费 WAF,要么适配不了 SpringBoot 的 JSON 参数,要么规则太死板,直到同事推荐雷池,才发现免费工具也能解决专业问题。
二、雷池 WAF 适配 Java 集群的实战步骤
1. 部署雷池:Nginx 环境 10 分钟搞定
我们的 Nginx 部署在 CentOS 7,雷池用 Docker 部署,不用改 Nginx 配置,直接接管流量:
# 1. 装Docker(已装的跳过)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker && systemctl enable docker
# 2. 部署雷池,适配Nginx
docker run -d --name leichi -p 80:80 -p 443:443 -v /etc/leichi:/etc/leichi --restart=always leichi/waf:community
执行docker ps看到 “leichi” 状态为 “Up”,再执行docker logs leichi | grep "初始密码"拿到登录密码,打开浏览器输服务器 IP,用 admin + 初始密码登录控制台,改完密码就进入配置。
2. 配置 SpringBoot 接口防护:3 步精准拦截
步骤 1:关联 Java 集群
在雷池控制台 “网站管理→添加网站”,填写:
- 网站域名:集群的公网域名(没域名填服务器 IP);
- 后端地址:Nginx 的内网 IP(执行ip addr能找到,比如 172.16.0.6);
- 后端端口:Nginx 的运行端口(默认 80)。
点击 “保存”,雷池会自动反向代理 Nginx 流量,SpringBoot 服务不用做任何修改。
步骤 2:拦参数攻击
进入 “规则管理→SQL 注入防护”,开启 “智能语义分析”(比传统规则拦得更准),再针对 SpringBoot 接口加专属规则:
- 防护路径:填/api/user/*(我们的用户相关接口);
- 参数校验:设置 “userID 必须为纯数字”“orderID 格式为 ORD+8 位数字”,不符合直接拦截。
配置后,再用 “userID=1' or 1=1 --” 测试,直接返回 403,日志里能看到 “参数异常拦截” 的记录,SpringBoot 后端再也没收到这类请求。
步骤 3:解决高频请求
在 “CC 防护→频率限制” 里加规则:
- 防护路径:/api/user/query;
- 限制维度:选 “IP + 用户 Token”(按用户限流,比纯 IP 精准);
- 频次阈值:设 “每分钟最多 30 次”,超过触发人机验证。
这样既拦住恶意高频请求,又不影响正常用户,数据库连接池占用从 90% 降到 30%。
三、踩坑总结:Java 后端用雷池的 3 个注意点
- JSON 参数适配:SpringBoot 常用 JSON 传参,在雷池 “系统配置→HTTP 设置” 里勾选 “保留 JSON 参数结构”,避免参数解析错误;
- 别过度防护:对健康检查接口(/actuator/health)加白名单,避免雷池拦截 SpringBoot 的监控请求;
- 日志联动:把雷池日志同步到 ELK,和 SpringBoot 的业务日志一起分析,方便定位问题。
现在我们的 Java 集群稳定运行 3 个月,恶意请求拦截率 99%,服务可用性从 95% 提到 99.9%,关键还完全免费。如果你们也是 Java 后端,维护 Nginx+SpringBoot 集群,遇到恶意请求问题,试试雷池,不用复杂配置,免费方案也能守住稳定性。