3.5 KiB
3.5 KiB
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 中)
cd backend/services
./deploy.sh up
2. 配置 Nginx + SSL
cd backend/api-gateway/nginx
sudo chmod +x install.sh
sudo ./install.sh
3. 验证
# 检查 Kong 状态
curl http://localhost:8001/status
# 测试 API 路由
curl https://rwaapi.szaiai.com/api/v1/versions
Kong 管理
查看配置
# 查看所有服务
curl http://localhost:8001/services
# 查看所有路由
curl http://localhost:8001/routes
# 查看所有插件
curl http://localhost:8001/plugins
重新加载配置
# 进入 Kong 容器
docker exec -it rwa-kong sh
# 重载配置
kong reload
插件
已启用的全局插件:
| 插件 | 功能 |
|---|---|
| cors | 跨域支持 |
| rate-limiting | 请求限流 (100/分钟, 5000/小时) |
| file-log | 请求日志 |
| request-size-limiting | 请求大小限制 (50MB) |
故障排除
1. Kong 无法连接数据库
# 检查 kong-db 状态
docker logs rwa-kong-db
# 手动运行迁移
docker exec -it rwa-kong kong migrations bootstrap
2. 路由不生效
# 检查 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