接口请求控制工具

接口请求控制工具

功能说明

代理转发

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

工具源码

接口请求控制工具

相关推荐
花落人散处37 分钟前
SpringAI——接入高德MCP服务
java·后端
超浪的晨37 分钟前
Java 代理机制详解:从静态代理到动态代理,彻底掌握代理模式的原理与实战
java·开发语言·后端·学习·代理模式·个人开发
天天摸鱼的java工程师38 分钟前
🧠 MySQL 索引结构有哪些?优缺点是什么?【原理 + 场景实战】
java·后端·面试
java叶新东老师1 小时前
idea提交时忽略.class、.iml文件和文件夹或目录的方法
java·开发语言
飞翔的佩奇1 小时前
Java项目:基于SSM框架实现的社区团购管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+远程部署】
java·数据库·vue.js·毕业设计·mybatis·答辩ppt·社区团购
TDengine (老段)1 小时前
TDengine 转化函数 TO_TIMESTAMP 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Warren981 小时前
Java Collections工具类
java·开发语言·笔记·python·学习·oracle·硬件工程
java叶新东老师2 小时前
CMakelists.txt 实现多级目录编译
java·服务器·数据库
_风不会停息2 小时前
JDK1.8升级 JDK21 实践踩坑
java
SimonKing2 小时前
一文搞定:SpringBoot集成语音识别模型FunASR
java·人工智能·后端