接口请求控制工具

接口请求控制工具

功能说明

代理转发

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

工具源码

接口请求控制工具

相关推荐
逻辑驱动的ken4 分钟前
Java高频面试场景题07
java·开发语言·面试·职场和发展·求职招聘·春招
hutengyi6 分钟前
四、nginx的优化和location匹配规则
运维·nginx
slarymusic9 分钟前
解决报错net.sf.jsqlparser.statement.select.SelectBody
java
callJJ11 分钟前
JVM 内存区域划分详解——从生活比喻到运行时数据区全景图
java·jvm·面试·内存区域划分
小江的记录本14 分钟前
【网络安全】《网络安全与数据安全核心知识体系》(包括数据脱敏、数据加密、隐私合规、等保2.0)
java·网络·后端·python·算法·安全·web安全
北漂Zachary15 分钟前
PHP vs Python vs Java:三大编程语言终极对比
java·python·php
Paxon Zhang17 分钟前
JavaEE初阶学习web开发的第一步**计算机组成原理,操作系统,进程(基础扫盲)**
java·后端·学习·java-ee
慕容卡卡20 分钟前
大模型核心,MCP(模型上下文协议)和Session API
java·开发语言·人工智能·spring boot·spring cloud
zore_c20 分钟前
【C++】C++类和对象实现日期类项目——时间计算器!!!
java·c语言·数据库·c++·笔记·算法·排序算法
eEKI DAND24 分钟前
一个比 Nginx 还简单的 Web 服务器
服务器·前端·nginx