Files
AIGC/demo/ROUTE_ANALYSIS.md

314 lines
7.8 KiB
Markdown
Raw Normal View History

2025-11-13 17:01:39 +08:00
# 项目路由分析报告
## 统一前缀路由
### API 路由前缀
**主要前缀:`/api/`**
所有后端 REST API 接口统一使用 `/api/` 作为前缀。
## 详细路由分类
### 1. REST API 路由(`/api/`
#### 认证授权模块
- `/api/auth/**` - 用户认证(登录、注册)
- `/api/verification/**` - 验证码服务
- `/api/email/**` - 邮件服务
- `/api/tencent/**` - 腾讯云服务集成
#### 视频生成模块
- `/api/text-to-video/**` - 文生视频
- `/api/image-to-video/**` - 图生视频
- `/api/storyboard-video/**` - 分镜视频
#### 用户作品模块
- `/api/works/**` - 用户作品管理
#### 支付订单模块
- `/api/payments/**` - 支付相关
- `/api/payments/alipay/**` - 支付宝支付
- `/api/orders/**` - 订单管理
#### 会员积分模块
- `/api/members/**` - 会员管理
- `/api/points/**` - 积分系统
#### 任务管理模块
- `/api/task-queue/**` - 任务队列
- `/api/task-status/**` - 任务状态
- `/api/cleanup/**` - 任务清理
#### 管理后台模块
- `/api/admin/**` - 管理员接口
- `/api/dashboard/**` - 数据仪表盘
- `/api/analytics/**` - 数据分析
#### 系统设置模块
- `/api/api-key/**` - API 密钥管理
- `/api/prompt/**` - 提示词优化
#### 测试诊断模块
- `/api/test/**` - 测试接口
- `/api/diagnostic/**` - 诊断接口
- `/api/polling/**` - 轮询测试
- `/api/polling-diagnostic/**` - 轮询诊断
- `/api/monitor/**` - 监控接口
#### 公共接口
- `/api/public/**` - 公共API无需认证
- `/api/health/**` - 健康检查接口
### 2. 页面路由(非 API
#### 用户页面
- `/login` - 登录页面
- `/register` - 注册页面
- `/payment/**` - 支付页面
- `/orders/**` - 订单页面
#### 管理员页面
- `/settings/**` - 系统设置页面(管理员)
- `/users/**` - 用户管理页面(管理员)
#### 开发工具
- `/h2-console/**` - H2 数据库控制台(开发环境)
### 3. API 文档路由
- `/swagger-ui.html` - Swagger UI 主页
- `/swagger-ui/**` - Swagger UI 资源
- `/v3/api-docs/**` - OpenAPI 文档 JSON
- `/swagger-resources/**` - Swagger 资源
- `/webjars/**` - Web 资源库
### 4. 静态资源路由
- `/css/**` - CSS 样式文件
- `/js/**` - JavaScript 文件
- `/uploads/**` - 上传文件
## 路由代理配置
### Nginx 代理配置
#### 1. API 代理(推荐配置)
```nginx
# API 代理到后端
location /api/ {
proxy_pass http://172.22.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置(视频生成可能需要较长时间)
proxy_connect_timeout 30s;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
# 支持大文件上传
client_max_body_size 600M;
}
```
#### 2. Swagger UI 代理(可选,用于生产环境)
```nginx
# API 文档代理
location ~ ^/(swagger-ui|v3/api-docs|swagger-resources|webjars) {
proxy_pass http://172.22.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
#### 3. 上传文件代理
```nginx
# 上传文件代理
location /uploads/ {
proxy_pass http://172.22.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 缓存设置
expires 7d;
add_header Cache-Control "public, immutable";
}
```
#### 4. WebSocket 支持(如果需要)
```nginx
location /ws/ {
proxy_pass http://172.22.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
### Apache 代理配置(如果使用 Apache
```apache
# 启用代理模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# API 代理
ProxyPass /api/ http://172.22.0.1:8080/
ProxyPassReverse /api/ http://172.22.0.1:8080/
# Swagger UI 代理
ProxyPass /swagger-ui/ http://172.22.0.1:8080/swagger-ui/
ProxyPassReverse /swagger-ui/ http://172.22.0.1:8080/swagger-ui/
ProxyPass /v3/api-docs/ http://172.22.0.1:8080/v3/api-docs/
ProxyPassReverse /v3/api-docs/ http://172.22.0.1:8080/v3/api-docs/
```
## 权限配置
### 无需认证(公开访问)
```
/login
/register
/api/public/**
/api/auth/**
/api/verification/**
/api/email/**
/api/tencent/**
/api/test/**
/api/health/**
/api/orders/stats
/api/payments/alipay/notify
/api/payments/alipay/return
/swagger-ui/**
/v3/api-docs/**
```
### 需要认证
```
/api/orders/**(除 /api/orders/stats
/api/payments/**(除支付宝回调)
/api/image-to-video/**
/api/text-to-video/**
/api/works/**
/api/points/**
/api/members/**
```
### 需要管理员权限
```
/api/dashboard/**
/api/admin/**
/settings/**
/users/**
```
## 完整 Nginx 配置示例
```nginx
server {
listen 80;
server_name localhost;
root /www/wwwroot/your-domain.com;
index index.html index.htm;
# 开启gzip压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
# 前端路由支持History模式
location / {
try_files $uri $uri/ /index.html;
}
# API 代理到后端(主要路由)
location /api/ {
proxy_pass http://172.22.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 30s;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
# 支持大文件上传
client_max_body_size 600M;
}
# Swagger UI 代理
location ~ ^/(swagger-ui|v3/api-docs|swagger-resources|webjars) {
proxy_pass http://172.22.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 上传文件代理
location /uploads/ {
proxy_pass http://172.22.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
expires 7d;
add_header Cache-Control "public, immutable";
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
```
## 宝塔面板配置
在宝塔面板中配置反向代理:
1. 进入网站设置 → 反向代理
2. 添加反向代理规则:
- **代理名称**: API代理
- **目标URL**: http://172.22.0.1:8080
- **发送域名**: $host
- **代理路径**: /api/
- **缓存**: 关闭
## 总结
- **统一API前缀**: `/api/`
- **后端服务地址**: `http://172.22.0.1:8080`
- **主要代理路径**: `/api/``http://172.22.0.1:8080/`
- **文档访问**: `/swagger-ui.html`
- **特殊配置**: 需要支持大文件上传600M和长时间请求15分钟