接口请求控制工具

接口请求控制工具

功能说明

代理转发

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

工具源码

接口请求控制工具

相关推荐
向着光芒的女孩17 小时前
【IDEA】关不了的Proxy Authentication弹框探索过程
java·ide·intellij-idea
Filotimo_17 小时前
Spring Boot 整合 JdbcTemplate(持久层)
java·spring boot·后端
李慕婉学姐17 小时前
【开题答辩过程】以《“饭否”食材搭配指南小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring·小程序
abments19 小时前
pgsql timestamp without time zone > character varying解决方案
java
sanggou19 小时前
大数据量查询处理方案 - 内存优化与高效展示
java
没有bug.的程序员19 小时前
Java 字节码:看懂 JVM 的“机器语言“
java·jvm·python·spring·微服务
-大头.19 小时前
深入理解 Java 内存区域与 JVM 运行机制
java·jvm
没有bug.的程序员19 小时前
JVM 整体架构:一套虚拟机的心脏与血管
java·jvm·spring boot·spring cloud·架构
晨枫阳20 小时前
不同语言的元组对比
java·前端·javascript
悟能不能悟20 小时前
怎么在idea合并2个个branch
java·ide·intellij-idea