接口请求控制工具

接口请求控制工具

功能说明

代理转发

  • 支持多路由配置
  • 支持静态资源代理
  • 灵活的路由规则配置
  • 支持请求转发和响应处理
  • 支持负载均衡
    • 支持多目标服务器配置
    • 提供多种负载均衡策略:
      • 轮询(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+

配置说明

  1. 配置文件位置:源码/config/
  2. 主要配置文件:
    • proxy-routes.json:代理路由配置
      • targetUrls:目标服务器地址列表
      • loadBalance:负载均衡配置
        • strategy:负载均衡策略
        • weights:服务器权重配置(可选)
      • rateLimit:请求频率限制
      • isStatic:是否为静态资源
      • security:安全配置
    • ip-whitelist.json:IP白名单配置
    • ip-blacklist.json:IP黑名单配置

启动服务

  1. 编译项目:

    bash 复制代码
    mvn clean package
  2. 运行服务:

    bash 复制代码
    java -jar target/SpringBoot-1.0-SNAPSHOT-execute.jar
  3. 默认端口:10020

工具源码

接口请求控制工具

相关推荐
喜欢便码5 分钟前
JS小练习0.1——弹出姓名
java·前端·javascript
王磊鑫1 小时前
重返JAVA之路-初识JAVA
java·开发语言
半兽先生2 小时前
WebRtc 视频流卡顿黑屏解决方案
java·前端·webrtc
南星沐3 小时前
Spring Boot 常用依赖介绍
java·前端·spring boot
代码不停3 小时前
Java中的异常
java·开发语言
何似在人间5754 小时前
多级缓存模型设计
java·jvm·redis·缓存
多云的夏天4 小时前
ubuntu24.04-MyEclipse的项目导入到 IDEA中
java·intellij-idea·myeclipse
Fanxt_Ja4 小时前
【数据结构】红黑树超详解 ---一篇通关红黑树原理(含源码解析+动态构建红黑树)
java·数据结构·算法·红黑树
Aphelios3804 小时前
TaskFlow开发日记 #1 - 原生JS实现智能Todo组件
java·开发语言·前端·javascript·ecmascript·todo
weixin_448771725 小时前
使用xml模板导出excel
xml·java·excel