# Aneiang.Yarp **Repository Path**: JsuneCloud/aneiang-yarp ## Basic Information - **Project Name**: Aneiang.Yarp - **Description**: 基于 YARP 的生产级全功能 API 网关 Dashboard 可视化管理 · WAF 防火墙 · 通知告警 · 动态路由 · 自动注册 · IP 隔离 · 熔断限流 · 健康检查 · 配置回滚 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: https://yarp.aneiang.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2026-06-22 - **Last Updated**: 2026-06-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
LOGO **Aneiang.Yarp — 基于 YARP 的全功能 API 网关** Dashboard · 动态路由 · WAF 防火墙 · 通知告警 · IP 隔离 · 自动注册 [![NuGet](https://img.shields.io/nuget/v/Aneiang.Yarp.svg)](https://www.nuget.org/packages/Aneiang.Yarp) [![NuGet](https://img.shields.io/nuget/v/Aneiang.Yarp.Dashboard.svg)](https://www.nuget.org/packages/Aneiang.Yarp.Dashboard) [![NuGet](https://img.shields.io/nuget/v/Aneiang.Yarp.Client.svg)](https://www.nuget.org/packages/Aneiang.Yarp.Client) [![YARP](https://img.shields.io/badge/YARP-2.3.0-blue.svg)](https://github.com/microsoft/reverse-proxy) [![.NET](https://img.shields.io/badge/.NET-8.0%20%7C%209.0-purple.svg)](https://dotnet.microsoft.com/) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [English](README.md) | [中文](README.zh-CN.md)
--- **Aneiang.Yarp** 是基于 [微软 YARP](https://microsoft.github.io/reverse-proxy/) 2.3.0 构建的生产级 API 网关增强方案。它在 YARP 基础上补齐了所有生产环境所需的配套设施:可视化管理面板、WAF 防火墙、通知告警、健康监控、熔断器面板、客户端自动注册、IP 隔离负载均衡 — 全部通过三个 NuGet 包交付。 > **文档地址**:https://yarp.aneiang.com > **在线演示**:https://yarp-test.aneiang.com/aneiang  ·  `admin` / `demo123` --- ## 包结构 | 包 | 用途 | 依赖 YARP | |:----|:------|:---:| | **Aneiang.Yarp** | 网关核心:动态路由引擎(`IDynamicYarpConfigService`)、配置持久化、API 鉴权体系、IP 隔离负载均衡(`IpBasedLoadBalancingPolicy`)、存储层抽象(8 个独立仓储接口)、配置变更事件模型、gRPC 注册协议 | ✅ | | **Aneiang.Yarp.Dashboard** | Web 管理面板:全量 CRUD、WAF 防火墙(`WafMiddleware`)、通知告警(钉钉/通用 Webhook)、健康检查监控、熔断器管理(`CircuitBreakerMiddleware`)、代理日志(`YarpRequestCaptureMiddleware`)、审计日志、配置快照与回滚、策略引擎(`GatewayPolicyService`)、限流/重试中间件、SignalR 实时流量推送、SQLite 持久化(8 个 `Sqlite*Repository`) | 通过核心库 | | **Aneiang.Yarp.Client** | 客户端 SDK:`GatewayRegistrationHostedService` 启动自动注册 + 关闭自动注销、Kestrel 自动配置,一行代码接入。零 YARP 依赖,仅需 `Microsoft.AspNetCore.App` | ❌ | ``` Aneiang.Yarp.Dashboard └── Aneiang.Yarp └── Aneiang.Yarp.Client 客户端微服务 → 仅引用 Aneiang.Yarp.Client(不引入 YARP SDK) 网关项目 → 引用 Aneiang.Yarp + Aneiang.Yarp.Dashboard ``` ### 技术栈 | 层级 | 技术 | 说明 | |:-----|:-----|:-----| | 反向代理引擎 | Microsoft YARP 2.3.0 | 高性能 HTTP 反向代理 | | 运行时 | .NET 8.0 / 9.0 | 跨平台 | | 存储 | SQLite(支持 SQLCipher AES-256 加密) | 嵌入式,零外部服务依赖 | | 通信 | REST API + gRPC + SignalR | HTTP 管理、gRPC 注册、WebSocket 实时推送 | | 认证 | JWT (HMAC-SHA256) + API Key | 内置登录页面,五种模式可切换 | | Dashboard 技术 | Razor Pages + 原生 JavaScript | 无 Node.js 依赖,响应式布局 | --- ## Dashboard 两行代码启用完整的管理面板: ```csharp builder.Services.AddAneiangYarpDashboard(); // ... app.UseAneiangYarpDashboard(); ```

Dashboard 概览

### 全部 15 个管理页面 | 分组 | 页面 | 详细功能 | |:------|:-----|:-----| | **概览** | 项目概览 | 活跃路由/集群计数、流量 QPS 概览、集群健康状态快速预览、最近变更时间线 | | **网关** | 集群管理 | 创建/编辑/删除集群(含多目标节点),配置主动/被动健康检查参数(检测端点、超时、间隔、可用目标策略),`HttpRequest` 与 `HttpClient` 配置 | | | 路由管理 | 管理路由规则(含 Transform 转换器、Metadata 元数据、`Waf:Enabled` 按路由开关),拖拽排序优先级,`CorsPolicy` 跨域配置 | | **监控** | 统计面板 | 请求量趋势、P50/P90/P99 延迟分位数、HTTP 状态码分布饼图、Top 路由排行 | | | 请求日志 | 实时代理日志流(WebSocket 推送),按路由/状态码/TraceID 组合过滤,敏感信息脱敏展示,支持采样与仅记录错误两种模式 | | | 熔断器 | 每集群/节点实时熔断状态:Closed(绿色)/Open(红色)/HalfOpen(黄色),连续失败次数 vs 阈值、恢复倒计时、熔断触发时间。一键重置所有熔断器 | | | 通知中心 | 管理 Webhook 渠道(钉钉机器人/通用 HTTP),配置事件规则(按事件类型独立开关+冷却时间),查看通知发送历史与状态 | | | 健康检查 | 集群级健康概览表格,按目标节点钻取展示实时健康状态、最近检查时间与结果 | | **安全** | 安全事件 | WAF 攻击日志实时看板(自动刷新),攻击类型分布统计、Top 攻击来源 IP、每条记录包含命中规则与匹配内容 | | | WAF 防火墙 | IP 黑白名单编辑(精确 IP/CIDR 网段/通配符),SQL 注入、XSS、路径遍历检测开关,请求大小限制参数,安全响应头配置 | | | 策略管理 | 流量策略创建/编辑/启用/禁用/排序,支持重试策略、超时策略、限流策略、请求转换策略等类型 | | | 插件管理 | 查看所有已注册的 `IGatewayPlugin` 插件(WAF 等),查看插件元数据与加载顺序 | | **系统** | 配置历史 | 每次变更前自动版本快照列表,可查看任意快照完整内容,一键回滚到指定历史版本 | | | 审计日志 | 完整操作审计轨迹:操作类型(创建/更新/删除/导入/回滚)、操作对象、操作人、变更前后 JSON Diff、精确时间戳 | | | 系统设置 | 认证模式切换、JWT 密钥配置、日志配置(采样率/脱敏列表/Body 长度限制)、一键下载 SQLite 数据库文件、语言切换 | --- ## 核心功能 ### 动态路由 YARP 原生通过 `appsettings.json` 或 `InMemoryConfigProvider` 管理路由,修改后需要手动更新内存状态。Aneiang.Yarp 在此基础上构建了完整的运行时路由管理体系: **双层配置源合并机制**: - **静态配置层**:`appsettings.json` 中 `ReverseProxy` 节点定义的基础路由,适合网关自身依赖的路由 - **动态配置层**:通过 Dashboard UI 或 REST API 注册的路由,存储在 `DynamicYarpConfigService` 中 - **合并策略**:启动时 `DynamicYarpConfigService.BuildMergedConfig()` 将静态与动态配置合并去重,注入 YARP 的 `InMemoryConfigProvider`,YARP 原生热更新机制确保实时生效 **自动持久化与恢复**: - 所有动态路由/集群变更即时写入 `gateway-dynamic.json`(应用根目录) - 网关重启时自动从该文件恢复全部动态配置,无需人工干预 - 配置文件格式与 YARP 标准配置兼容 **元数据追踪**:每个动态路由和集群自动记录 `CreatedAt`(创建时间)、`CreatedBy`(操作来源:Dashboard / API / Client / Import)、`Source`(来源标识) **线程安全保障**:所有对 `_routes` 和 `_clusters` 字典的读写通过 `SemaphoreSlim(1,1)` 保护。相比 `lock`,`SemaphoreSlim` 原生支持 async/await,不阻塞线程池线程,高并发下性能更优 提供完整的网关管理 REST API,支持路由和集群的 CRUD 操作、动态配置查询、健康检查等。 ### WAF 防火墙 内建于网关中间件管道的生产级 Web 应用防火墙,`WafMiddleware` 在请求到达反向代理之前执行安全检查,零外部服务依赖。所有检测规则关闭时,中间件直接透传,零性能损耗。 | 防护能力 | 实现细节 | |:-----------|:--------| | **IP 黑白名单** | 精确 IP、CIDR 网段(`192.168.1.0/24`)、通配符匹配。白名单优先:命中白名单直接放行,命中黑名单返回 403。IP 匹配使用预编译正则缓存,`RegexOptions.Compiled` | | **SQL 注入检测** | 2 组预编译正则:关键字组(`SELECT`、`UNION`、`DROP`、`INSERT` 等)+ 注入值组。每条正则含 5ms ReDoS 超时,防恶意构造输入耗尽 CPU | | **XSS 检测** | 检测 `