# Aneiang.Yarp **Repository Path**: aneiangsoft/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**: 18 - **Forks**: 10 - **Created**: 2026-04-27 - **Last Updated**: 2026-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: yarp, 网关, Gateway, 微服务, 运维监控 ## README
LOGO **Aneiang.Yarp — 基于 YARP 的全功能 API 网关** Dashboard · 动态路由 · WAF 防火墙 · AI 助手 · 2FA 验证 · 通知告警 · 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 防火墙、AI 智能助手、通知告警、健康监控、熔断器面板、客户端自动注册、IP 隔离负载均衡 — 全部通过三个 NuGet 包交付。 > **文档地址**:https://yarp.aneiang.com > > **在线演示**:https://yarp-test.aneiang.com/aneiang  ·  `admin` / `demo123` > >**在线代理地址(站点和代理端口隔离了)**:https://yarp-proxy.aneiang.com --- ## 目录 - [快速开始](#快速开始) - [包结构与技术栈](#包结构与技术栈) - [Dashboard](#dashboard) - [核心功能](#核心功能) - [动态路由](#动态路由) - [WAF 防火墙](#waf-防火墙) - [通知告警](#通知告警) - [健康检查监控](#健康检查监控) - [熔断器面板](#熔断器面板) - [网关策略引擎](#网关策略引擎) - [中间件管道与插件系统](#中间件管道与插件系统) - [客户端自动注册](#客户端自动注册) - [IP 隔离负载均衡](#ip-隔离负载均衡) - [请求日志](#请求日志) - [AI 智能助手](#ai-智能助手) - [认证](#认证) - [两步验证(2FA)](#两步验证2fa) - [配置管理](#配置管理) - [企业化 UI](#企业化-ui) - [配置参考](#配置参考) - [高级用法](#高级用法) - [示例项目](#示例项目) - [NuGet](#nuget) - [许可证](#许可证) --- ## 快速开始 ### 1. 创建网关 ```bash dotnet new web -n MyGateway cd MyGateway dotnet add package Aneiang.Yarp dotnet add package Aneiang.Yarp.Dashboard ``` ```csharp // Program.cs using Aneiang.Yarp.Extensions; using Aneiang.Yarp.Dashboard.Extensions; var builder = WebApplication.CreateBuilder(args); builder.Services.AddAneiangYarp(); builder.Services.AddAneiangYarpDashboard(); var app = builder.Build(); app.UseRouting(); app.UseAneiangYarpDashboard(); // 内部已包含 MapReverseProxy app.MapControllers(); app.Run(); ``` Dashboard 地址:`/apigateway`。 ### 2. 创建微服务 ```bash dotnet new web -n MyService cd MyService dotnet add package Aneiang.Yarp.Client ``` ```csharp // Program.cs using Aneiang.Yarp.Extensions; var builder = WebApplication.CreateBuilder(args); builder.Services.AddAneiangYarpClient(); // ← 启动时自动注册 builder.Services.AddControllers(); var app = builder.Build(); app.UseRouting(); app.MapControllers(); app.Run(); ``` ```json // appsettings.json { "Gateway": { "Registration": { "GatewayUrl": "http://localhost:5000" } } } ``` 微服务启动时自动注册到网关,关闭时自动注销。无需额外代码。 --- ## 包结构与技术栈 ### 包结构 | 包 | 用途 | 依赖 YARP | |:----|:------|:---:| | **Aneiang.Yarp** | 网关核心:动态路由引擎(`IDynamicYarpConfigService`)、配置持久化、API 鉴权体系、IP 隔离负载均衡(`IpBasedLoadBalancingPolicy`)、存储层抽象、配置变更事件模型、gRPC 注册协议 | ✅ | | **Aneiang.Yarp.Dashboard** | Web 管理面板:全量 CRUD、WAF 防火墙、AI 智能助手(Function Calling)、2FA 两步验证、通知告警、健康检查监控、熔断器管理、代理日志、审计日志、配置快照与回滚、策略引擎、限流/重试中间件、SignalR 实时流量推送、SQLite 持久化 | 通过核心库 | | **Aneiang.Yarp.Client** | 客户端 SDK:启动自动注册 + 关闭自动注销、Kestrel 自动配置,一行代码接入。零 YARP 依赖,仅需 `Microsoft.AspNetCore.App` | ❌ | | **Aneiang.Yarp.Storage.Abstractions** | 存储抽象层:8 个独立仓储接口 + 实体模型 | ❌ | | **Aneiang.Yarp.Storage.Sqlite** | SQLite 存储实现:支持 SQLCipher AES-256 加密,懒加载建表,共享连接池 | 通过抽象层 | | **Aneiang.Yarp.Grpc** | gRPC 注册协议:`GatewayRegistry.proto` 定义服务契约,自动端口分配 | ❌ | ``` Aneiang.Yarp.Dashboard └── Aneiang.Yarp ├── Aneiang.Yarp.Client ├── Aneiang.Yarp.Grpc └── Aneiang.Yarp.Storage.Abstractions └── Aneiang.Yarp.Storage.Sqlite 客户端微服务 → 仅引用 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 依赖,响应式布局 | | AI 能力 | OpenAI 兼容协议(SSE 流式) | 支持 OpenAI / DeepSeek / 千问 / 自定义服务商 | --- ## Dashboard 两行代码启用完整的管理面板: ```csharp builder.Services.AddAneiangYarpDashboard(); // ... app.UseAneiangYarpDashboard(); ```

Dashboard 概览

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