接口请求控制工具
功能说明
代理转发
- 支持多路由配置
- 支持静态资源代理
- 灵活的路由规则配置
- 支持请求转发和响应处理
- 支持负载均衡
- 支持多目标服务器配置
- 提供多种负载均衡策略:
- 轮询(Round Robin)
- 随机(Random)
- 加权轮询(Weighted Round Robin)
- 加权随机(Weighted Random)
- 最小连接数(Least Connections)
- 支持服务器权重配置
- 动态连接数跟踪
安全控制
-
XSS 防护:
- 自动检测和拦截 XSS 攻击
- 可配置的 XSS 过滤规则
- 按路由配置是否启用
-
CSRF 防护:
- 基于 Token 的 CSRF 防护
- 支持安全方法豁免(GET、HEAD等)
- 按路由配置是否启用
-
文件上传控制:
- 可配置的文件类型白名单
- 可配置的文件大小限制
- 文件名安全检查
- 按路由配置是否启用
访问控制
-
IP 黑白名单:
- 支持 IP 白名单配置
- 支持 IP 黑名单配置
- 动态的 IP 封禁机制
-
请求频率限制:
- 基于令牌桶算法
- 可配置的请求速率
- 按路由独立限制
错误处理
- 自定义错误页面:
- 502:目标服务器无响应
- CSRF:CSRF 验证失败
- static-404:静态资源未找到
- 403:IP 被临时封禁
- 404:路由未找到
- 429:请求频率超限
- 500:服务器内部错误
- 友好的错误提示
- 详细的错误日志记录
配置管理
-
路由配置:
json{ "routes": { "/api": { "targetUrls": [ "http://localhost:8080", "http://localhost:8081" ], "loadBalance": { "strategy": "WEIGHTED_ROUND_ROBIN", "weights": { "http://localhost:8080": 3, "http://localhost:8081": 2 } }, "rateLimit": 10, "isStatic": false, "security": { "enableXssFilter": true, "enableCsrfFilter": true, "enableFileUploadFilter": true, "fileUpload": { "maxFileSize": 10485760, "allowedFileTypes": [ "image/jpeg", "image/png", "image/gif", "application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ] } } } } }
-
IP 白名单配置:
json["127.0.0.1", "192.168.1.100"]
-
IP 黑名单配置:
json{ "192.168.1.200": { "banTime": "2024-03-10T10:00:00", "reason": "频繁访问" } }
日志管理
- 代理请求日志
- 错误日志
- 安全事件日志
- 按日期自动归档
- 可配置的日志级别
技术栈
- Spring Boot 2.3.4
- Thymeleaf
- Lombok
- Commons Pool2
快速开始
环境要求
- JDK 8+
- Maven 3.6+
配置说明
- 配置文件位置:
源码/config/
- 主要配置文件:
- proxy-routes.json:代理路由配置
- targetUrls:目标服务器地址列表
- loadBalance:负载均衡配置
- strategy:负载均衡策略
- weights:服务器权重配置(可选)
- rateLimit:请求频率限制
- isStatic:是否为静态资源
- security:安全配置
- ip-whitelist.json:IP白名单配置
- ip-blacklist.json:IP黑名单配置
- proxy-routes.json:代理路由配置
启动服务
-
编译项目:
bashmvn clean package
-
运行服务:
bashjava -jar target/SpringBoot-1.0-SNAPSHOT-execute.jar
-
默认端口:10020