🚀 系统化修复方案
阶段1: 架构清理 (立即执行)
# 1. 停止混合架构,选择单一模式
# 选项A: 纯Nginx生产模式 (推荐)
# 选项B: Vite生产构建 + Nginx代理
# 2. 清理混乱的配置
rm -f /etc/nginx/conf.d/*.conf.backup*
rm -f /var/www/saas.openyun.xin/*.backup*
# 3. 创建清晰的目录结构
/var/www/saas.openyun.xin/
├── index.html # 主入口
├── assets/ # 静态资源
├── api/ # API代理配置
└── pwa/ # PWA相关文件
阶段2: 配置标准化
# 1. 创建标准Nginx配置
cat > /etc/nginx/conf.d/saas.openyun.xin.standard.conf << 'NGINX'
server {
listen 443 ssl;
server_name saas.openyun.xin;
# SSL证书
ssl_certificate /etc/letsencrypt/live/saas.openyun.xin/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/saas.openyun.xin/privkey.pem;
# 根目录
root /var/www/saas.openyun.xin;
index index.html;
# 静态文件
location / {
try_files $uri $uri/ /index.html;
}
location /assets/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location ~* \.(png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# API代理
location /api/ {
proxy_pass http://localhost:3004/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 健康检查
location /health {
proxy_pass http://localhost:3004/health;
}
}
NGINX
阶段3: 构建和部署流程
# 1. 前端生产构建
cd /home/admin/cloud-dining-saas/frontend
npm run build # 生成dist目录
# 2. 部署到生产目录
rm -rf /var/www/saas.openyun.xin/*
cp -r dist/* /var/www/saas.openyun.xin/
# 3. 确保文件权限
chown -R admin:admin /var/www/saas.openyun.xin
chmod -R 755 /var/www/saas.openyun.xin