Skip to content

配置说明

配置文件位于项目根目录,支持多环境配置:

youlai-nest/
├── .env         # 基础配置
├── .env.dev     # 开发环境配置
└── .env.prod    # 生产环境配置

配置加载

加载顺序

  1. 加载 .env 基础配置
  2. 根据 NODE_ENV 加载环境配置 .env.{NODE_ENV}
  3. 环境变量覆盖文件配置

环境切换

bash
# 开发环境
NODE_ENV=dev pnpm start:dev

# 生产环境
NODE_ENV=prod pnpm start:prod

应用配置

env
# 运行环境:dev / prod / test
NODE_ENV=dev

# Nest 应用监听端口
APP_PORT=8000

# 会话类型:jwt | redis-token
SESSION_TYPE=jwt
配置项默认值说明
NODE_ENVdev运行环境
APP_PORT8000应用端口
SESSION_TYPEjwt会话类型

数据库配置

env
# MySQL 数据库配置
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=123456
MYSQL_DB=youlai_admin

# TypeORM SQL 日志输出
TYPEORM_LOGGING=true
配置项默认值说明
MYSQL_HOSTlocalhostMySQL 主机
MYSQL_PORT3306MySQL 端口
MYSQL_USERroot数据库用户名
MYSQL_PASSWORD-数据库密码
MYSQL_DByoulai_admin数据库名称
TYPEORM_LOGGINGtrue是否输出 SQL 日志

Redis 配置

env
# Redis 配置
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0
REDIS_PASSWORD=
配置项默认值说明
REDIS_HOSTlocalhostRedis 主机
REDIS_PORT6379Redis 端口
REDIS_DB0数据库编号
REDIS_PASSWORD-Redis 密码

JWT 配置

env
# JWT 认证配置
JWT_SECRET_KEY=dev-jwt-secret-change-me
JWT_EXPIRES_IN=7200
JWT_ISSUER=youlai-nest
配置项默认值说明
JWT_SECRET_KEY-JWT 签名密钥
JWT_EXPIRES_IN7200Token 有效期(秒)
JWT_ISSUERyoulai-nestToken 签发方

OSS 配置

env
# OSS 类型:aliyun | minio | local
OSS_TYPE=minio

# MinIO 配置
OSS_MINIO_ENDPOINT=http://localhost:9000
OSS_MINIO_ACCESS_KEY=minioadmin
OSS_MINIO_SECRET_KEY=minioadmin
OSS_MINIO_BUCKET=default

# 阿里云 OSS 配置
OSS_ALIYUN_ENDPOINT=oss-cn-hangzhou.aliyuncs.com
OSS_ALIYUN_ACCESS_KEY_ID=your-access-key-id
OSS_ALIYUN_ACCESS_KEY_SECRET=your-access-key-secret
OSS_ALIYUN_BUCKET=default

# 本地存储路径
OSS_LOCAL_STORAGE_PATH=D:/data/oss/
类型说明
minioMinIO 对象存储
aliyun阿里云 OSS
local本地文件系统

会话模式

模式说明适用场景
jwt无状态,Token 自包含信息微服务、分布式
redis-token有状态,Token 存储在 Redis需要会话治理

配置使用

在模块中使用

typescript
import { ConfigService } from '@nestjs/config';

@Injectable()
export class AuthService {
  constructor(private configService: ConfigService) {
    const jwtSecret = this.configService.get<string>('JWT_SECRET_KEY');
    const dbHost = this.configService.get<string>('MYSQL_HOST');
  }
}

自定义配置文件

typescript
// src/config/app.config.ts
export default () => ({
  port: parseInt(process.env.APP_PORT, 10) || 8000,
  sessionType: process.env.SESSION_TYPE || 'jwt',
});

环境变量覆盖

生产环境可通过环境变量覆盖配置:

bash
# Docker / Kubernetes
docker run -e MYSQL_HOST=192.168.1.100 \
           -e MYSQL_PASSWORD=production-password \
           -e JWT_SECRET_KEY=production-secret \
           youlai-nest:latest

相关文件

文件说明
.env基础配置
.env.dev开发环境配置
.env.prod生产环境配置
src/config/配置模块

基于 MIT 许可发布