fix(ops): 加固部署/代理/迁移脚本,生产环境安全默认

由 OCR(open-codereview.ai,deepseek-v4-flash)审查驱动修复:
- serve-proxy:API_TARGET 生效、SPA 404 语义、流式静态文件、hop-by-hop/超时/断连/穿越防护
- migrate.sh:密码不进 argv/不泄漏 pm2、原子锁防重入、DML-only 事务说明、就绪诊断
- deploy.sh/CI:保护 .env、总是 npm ci(迁移依赖 devDeps)、健康检查、并发锁
- ecosystem/oxlint/.env.example:优雅停机、React 版本对齐、TRUST_PROXY 说明

Reviewed-by: OCR (open-codereview.ai)
This commit is contained in:
2026-08-09 21:29:22 +08:00
parent 9565a0f23c
commit 3bcad138a1
7 changed files with 476 additions and 57 deletions

View File

@@ -4,7 +4,10 @@
// 生产环境配置写在项目根目录 .env由 Nest ConfigModule 读取
// 前端构建产物 apps/admin/dist 交给 Nginx 托管,不再用 PM2 启动前端
const path = require('path');
const DEPLOY_DIR = process.env.DEPLOY_DIR || __dirname;
const LOG_DIR = path.join(DEPLOY_DIR, 'logs');
module.exports = {
apps: [
@@ -21,9 +24,12 @@ module.exports = {
max_memory_restart: '512M',
max_restarts: 10,
restart_delay: 5000,
// 日志
error_file: 'logs/backend-error.log',
out_file: 'logs/backend-out.log',
// 优雅停机:给 Nest 时间排空请求/连接
kill_timeout: 5000,
listen_timeout: 8000,
// 日志(绝对路径,与启动目录无关)
error_file: path.join(LOG_DIR, 'backend-error.log'),
out_file: path.join(LOG_DIR, 'backend-out.log'),
log_date_format: 'YYYY-MM-DD HH:mm:ss',
autorestart: true,
watch: false,