Files
AIGC/demo/deploy_baota/ROUTE_ANALYSIS.md
2025-11-13 17:01:39 +08:00

7.8 KiB
Raw Blame History

项目路由分析报告

统一前缀路由

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 代理(推荐配置)

# 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 代理(可选,用于生产环境)

# 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. 上传文件代理

# 上传文件代理
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 支持(如果需要)

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

# 启用代理模块
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/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 配置示例

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分钟