152 lines
3.5 KiB
Markdown
152 lines
3.5 KiB
Markdown
# API Gateway - Kong
|
|
|
|
RWADurian 项目的 API 网关,基于 Kong 实现。
|
|
|
|
## 架构
|
|
|
|
```
|
|
用户请求
|
|
↓
|
|
Nginx (SSL/负载均衡)
|
|
↓ rwaapi.szaiai.com:443
|
|
Kong API Gateway
|
|
↓ :8000
|
|
各微服务
|
|
├── identity-service :3000
|
|
├── wallet-service :3001
|
|
├── backup-service :3002
|
|
├── planting-service :3003
|
|
├── referral-service :3004
|
|
├── reward-service :3005
|
|
├── mpc-service :3006
|
|
├── leaderboard-service:3007
|
|
├── reporting-service :3008
|
|
├── authorization-service:3009
|
|
├── admin-service :3010
|
|
└── presence-service :3011
|
|
```
|
|
|
|
## 文件结构
|
|
|
|
```
|
|
api-gateway/
|
|
├── kong.yml # Kong 声明式配置
|
|
├── README.md # 本文档
|
|
└── nginx/
|
|
├── rwaapi.szaiai.com.conf # Nginx 配置
|
|
└── install.sh # 一键安装脚本
|
|
```
|
|
|
|
## API 路由
|
|
|
|
| 路径 | 服务 | 说明 |
|
|
|------|------|------|
|
|
| `/api/v1/auth/*` | identity-service | 认证相关 |
|
|
| `/api/v1/users/*` | identity-service | 用户管理 |
|
|
| `/api/v1/wallets/*` | wallet-service | 钱包管理 |
|
|
| `/api/v1/backups/*` | backup-service | 备份服务 |
|
|
| `/api/v1/plantings/*` | planting-service | 种植管理 |
|
|
| `/api/v1/trees/*` | planting-service | 树木管理 |
|
|
| `/api/v1/referrals/*` | referral-service | 推荐系统 |
|
|
| `/api/v1/rewards/*` | reward-service | 奖励系统 |
|
|
| `/api/v1/mpc/*` | mpc-service | 多方计算 |
|
|
| `/api/v1/leaderboard/*` | leaderboard-service | 排行榜 |
|
|
| `/api/v1/reports/*` | reporting-service | 报表统计 |
|
|
| `/api/v1/statistics/*` | reporting-service | 数据统计 |
|
|
| `/api/v1/authorization/*` | authorization-service | 授权管理 |
|
|
| `/api/v1/permissions/*` | authorization-service | 权限管理 |
|
|
| `/api/v1/roles/*` | authorization-service | 角色管理 |
|
|
| `/api/v1/versions/*` | admin-service | 版本管理 |
|
|
| `/api/v1/admin/*` | admin-service | 后台管理 |
|
|
| `/api/v1/presence/*` | presence-service | 在线状态 |
|
|
|
|
## 部署
|
|
|
|
### 1. 启动 Kong (包含在 services 的 docker-compose.yml 中)
|
|
|
|
```bash
|
|
cd backend/services
|
|
./deploy.sh up
|
|
```
|
|
|
|
### 2. 配置 Nginx + SSL
|
|
|
|
```bash
|
|
cd backend/api-gateway/nginx
|
|
sudo chmod +x install.sh
|
|
sudo ./install.sh
|
|
```
|
|
|
|
### 3. 验证
|
|
|
|
```bash
|
|
# 检查 Kong 状态
|
|
curl http://localhost:8001/status
|
|
|
|
# 测试 API 路由
|
|
curl https://rwaapi.szaiai.com/api/v1/versions
|
|
```
|
|
|
|
## Kong 管理
|
|
|
|
### 查看配置
|
|
|
|
```bash
|
|
# 查看所有服务
|
|
curl http://localhost:8001/services
|
|
|
|
# 查看所有路由
|
|
curl http://localhost:8001/routes
|
|
|
|
# 查看所有插件
|
|
curl http://localhost:8001/plugins
|
|
```
|
|
|
|
### 重新加载配置
|
|
|
|
```bash
|
|
# 进入 Kong 容器
|
|
docker exec -it rwa-kong sh
|
|
|
|
# 重载配置
|
|
kong reload
|
|
```
|
|
|
|
## 插件
|
|
|
|
已启用的全局插件:
|
|
|
|
| 插件 | 功能 |
|
|
|------|------|
|
|
| cors | 跨域支持 |
|
|
| rate-limiting | 请求限流 (100/分钟, 5000/小时) |
|
|
| file-log | 请求日志 |
|
|
| request-size-limiting | 请求大小限制 (50MB) |
|
|
|
|
## 故障排除
|
|
|
|
### 1. Kong 无法连接数据库
|
|
|
|
```bash
|
|
# 检查 kong-db 状态
|
|
docker logs rwa-kong-db
|
|
|
|
# 手动运行迁移
|
|
docker exec -it rwa-kong kong migrations bootstrap
|
|
```
|
|
|
|
### 2. 路由不生效
|
|
|
|
```bash
|
|
# 检查 kong.yml 语法
|
|
docker exec -it rwa-kong kong config parse /etc/kong/kong.yml
|
|
|
|
# 重启 Kong
|
|
docker restart rwa-kong
|
|
```
|
|
|
|
### 3. 502 Bad Gateway
|
|
|
|
- 检查目标服务是否运行: `docker ps`
|
|
- 检查服务网络连通性: `docker exec rwa-kong curl http://admin-service:3010/api/v1/health`
|