配置说明
配置文件位于项目根目录,支持多环境配置:
youlai-nest/
├── .env # 基础配置
├── .env.dev # 开发环境配置
└── .env.prod # 生产环境配置配置加载
加载顺序
- 加载
.env基础配置 - 根据
NODE_ENV加载环境配置.env.{NODE_ENV} - 环境变量覆盖文件配置
环境切换
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_ENV | dev | 运行环境 |
APP_PORT | 8000 | 应用端口 |
SESSION_TYPE | jwt | 会话类型 |
数据库配置
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_HOST | localhost | MySQL 主机 |
MYSQL_PORT | 3306 | MySQL 端口 |
MYSQL_USER | root | 数据库用户名 |
MYSQL_PASSWORD | - | 数据库密码 |
MYSQL_DB | youlai_admin | 数据库名称 |
TYPEORM_LOGGING | true | 是否输出 SQL 日志 |
Redis 配置
env
# Redis 配置
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0
REDIS_PASSWORD=| 配置项 | 默认值 | 说明 |
|---|---|---|
REDIS_HOST | localhost | Redis 主机 |
REDIS_PORT | 6379 | Redis 端口 |
REDIS_DB | 0 | 数据库编号 |
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_IN | 7200 | Token 有效期(秒) |
JWT_ISSUER | youlai-nest | Token 签发方 |
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/| 类型 | 说明 |
|---|---|
minio | MinIO 对象存储 |
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/ | 配置模块 |
