Skip to content

项目配置说明

概述

本文档描述 NXAI 项目的配置结构、环境变量及部署配置。


一、技术栈

后端技术栈

组件版本说明
Java1.8语言版本
Spring Boot2.3.5.RELEASE应用框架
MyBatis-Plus3.3.1.tmpORM 框架
MySQL8.0.20数据库
Redis-缓存
JWT (auth0)3.5.0认证
Shiro1.4.1权限管理
Hutool-工具库
MapStruct-对象映射

前端技术栈

组件版本说明
Vue.js2.x前端框架
Vue Router-路由管理
Vuex-状态管理
Element UI-UI 组件库
Axios-HTTP 客户端
NProgress-进度条

二、项目结构

nxaitest/
├── nxaitest-backend/          # Java Spring Boot 后端
│   ├── src/main/java/top/ptcc9/
│   │   ├── controller/        # REST Controller(19个)
│   │   ├── service/           # 业务逻辑层
│   │   ├── mapper/            # MyBatis Mapper
│   │   ├── entity/            # 数据库实体
│   │   ├── dto/               # 请求/响应 DTO
│   │   ├── config/            # 配置类
│   │   ├── common/            # 通用响应类
│   │   ├── exceptions/        # 全局异常处理
│   │   ├── handler/           # 拦截器、定时任务
│   │   ├── ratelimit/         # 限流模块
│   │   ├── annotations/       # 自定义注解
│   │   ├── utils/             # 工具类
│   │   └── agent/             # AI Agent
│   ├── src/main/resources/
│   │   ├── application.yml    # 主配置文件
│   │   └── mapper/            # MyBatis XML
│   └── pom.xml                # Maven 配置

├── nxaitest-frontend/         # Vue.js 前端
│   ├── src/
│   │   ├── views/             # 页面组件
│   │   ├── router/index.js    # 路由配置
│   │   ├── store/index.js     # Vuex 状态管理
│   │   ├── common/request.js  # Axios 封装
│   │   ├── network/           # API 请求封装
│   │   ├── services/          # 消息流服务
│   │   ├── utils/             # 工具函数
│   │   └── agents/            # 前端 Agent
│   └── vue.config.js          # Vue CLI 配置

├── docs/                      # VitePress 文档
│   └── docs/
│       ├── api/               # API 文档
│       └── .vitepress/        # VitePress 配置

├── nginx/conf.d/              # Nginx 配置
├── docker-compose.yml         # 开发环境 Docker Compose
└── docker-compose-prod.yml    # 生产环境 Docker Compose

三、后端配置

3.1 application.yml 主要配置

yaml
server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/nxaitest?useSSL=false&serverTimezone=Asia/Shanghai
    username: admin
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
  
  redis:
    host: localhost
    port: 6379
    timeout: 6000ms

# 认证配置
nxai:
  auth:
    public-register-enabled: false
    upstream-register-url: https://example.com/register
  
  # AI 网关配置
  foundation:
    base-url: https://example.com
  
  # 资产存储
  asset:
    root: ./runtime-assets
  
  # 预配密钥(用于 new-api 回调)
  provision-from-ai:
    secret: your-secret-key

3.2 环境变量

变量名说明默认值
SPRING_DATASOURCE_URL数据库连接 URL-
SPRING_DATASOURCE_USERNAME数据库用户名-
SPRING_DATASOURCE_PASSWORD数据库密码-
SPRING_REDIS_HOSTRedis 主机localhost
SPRING_REDIS_PORTRedis 端口6379
NXAI_AUTH_PUBLIC_REGISTER_ENABLED是否开放注册false
NXAI_ASSET_ROOT资产存储根目录./runtime-assets
NXAI_PROVISION_FROM_AI_SECRET预配密钥-

四、前端配置

4.1 vue.config.js

javascript
module.exports = {
  publicPath: '/test/',
  devServer: {
    proxy: {
      '/test/api': {
        target: 'http://localhost:8081',
        changeOrigin: true,
        pathRewrite: { '^/test/api': '/api' }
      }
    }
  }
}

4.2 请求基础 URL

前端通过 getRequestBaseUrl() 函数动态获取基础 URL:

javascript
function getRequestBaseUrl() {
  if (typeof window !== 'undefined' && window.location && window.location.origin) {
    const raw = process.env.BASE_URL || '/';
    const prefix = raw.replace(/\/$/, '');
    const pathPart = prefix && prefix !== '/' ? prefix : '';
    return window.location.origin + pathPart;
  }
  return '';
}

五、部署配置

5.1 Docker Compose(开发环境)

yaml
version: '3.8'
services:
  mysql:
    image: mysql:8.0.20
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: nxaitest
    ports:
      - "3306:3306"
  
  redis:
    image: redis:6-alpine
    ports:
      - "6379:6379"
  
  backend:
    build: ./nxaitest-backend
    ports:
      - "8081:8081"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/nxaitest
      - SPRING_REDIS_HOST=redis
  
  frontend:
    build: ./nxaitest-frontend
    ports:
      - "8080:80"
  
  nginx:
    image: nginx:alpine
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
    ports:
      - "8003:80"

5.2 Nginx 配置

nginx
server {
  listen 80;
  server_name localhost;

  location /test/api/ {
    proxy_pass http://backend:8081/api/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /test/ {
    proxy_pass http://frontend:80/;
    proxy_set_header Host $host;
  }
}

六、端口说明

服务端口说明
后端 API8081Spring Boot 服务
前端8080Vue 开发服务器
MySQL3306数据库
Redis6379缓存
Nginx8003反向代理(开发环境)
Nginx80反向代理(生产环境)

七、启动命令

开发环境

bash
# 启动所有服务
docker-compose up -d

# 单独启动后端
cd nxaitest-backend
mvn spring-boot:run

# 单独启动前端
cd nxaitest-frontend
npm install
npm run dev

生产环境

bash
# 构建生产镜像
docker-compose -f docker-compose-prod.yml build

# 启动生产服务
docker-compose -f docker-compose-prod.yml up -d

八、API 访问路径

前端访问

路径说明
http://localhost:8003/test/前端首页
http://localhost:8003/test/api/后端 API

后端直接访问

路径说明
http://localhost:8081/api/后端 API 根路径

九、安全配置

9.1 JWT 密钥

后端使用 JWT 进行认证,密钥配置在 JwtUtil 类中:

java
private static final String SECRET = "your-jwt-secret-key";
private static final long EXPIRATION_TIME = 86400000; // 24小时

9.2 限流配置

后端实现了内存滑动窗口限流:

配置项说明
时间窗口1 分钟
限流阈值可配置
存储方式内存(进程级)

9.3 CORS 配置

所有 API 接口均配置了 CORS:

java
@CrossOrigin(origins = "*", maxAge = 3600)

十、文档站点

本地开发

bash
cd docs
npm install
npm run docs:dev

访问地址:http://localhost:5173

构建生产版本

bash
cd docs
npm run docs:build

构建产物输出到 docs/.vitepress/dist 目录。