将Vue前端和Node.js后端部署在同一台阿里云主机上有什么注意事项?

将 Vue 前端和 Node.js 后端部署在同一台阿里云主机上是常见做法,尤其适用于中小型项目。以下是部署时需要注意的关键事项和最佳实践:


一、服务器环境准备

  1. 选择合适的 ECS 实例

    • 根据项目规模选择 CPU、内存(建议至少 2GB RAM)。
    • 操作系统推荐:Ubuntu 20.04/22.04 LTS 或 CentOS 7/8。
  2. 安全组配置

    • 开放必要端口:
      • 80(HTTP)
      • 443(HTTPS)
      • 22(SSH)
      • 若调试用可临时开放后端 API 端口(如 3000),但生产环境应通过 Nginx 反向,不直接暴露。
    • 建议关闭其他不必要的端口。
  3. 更新系统与安装基础工具

    sudo apt update && sudo apt upgrade -y
    sudo apt install nginx git curl wget -y

二、Node.js 和 npm 安装

使用 nvm 管理 Node.js 版本更灵活:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 18  # 推荐 LTS 版本

验证安装:

node -v
npm -v

三、部署前端(Vue)

  1. 构建 Vue 项目
    在本地或 CI 中执行:

    npm run build

    生成 dist/ 目录。

  2. 上传 dist 文件到服务器
    使用 scprsync 或 Git 部署:

    scp -r dist/* user@your-server-ip:/var/www/vue-app/
  3. 目录权限设置

    sudo chown -R www-data:www-data /var/www/vue-app
    sudo chmod -R 755 /var/www/vue-app

四、部署后端(Node.js)

  1. 上传代码
    将 Node.js 项目上传至服务器,例如 /var/www/api/

  2. 安装依赖

    cd /var/www/api
    npm install --production
  3. 使用 PM2 管理进程
    安装 PM2:

    npm install -g pm2

    启动服务:

    pm2 start app.js --name "my-api"
    pm2 startup  # 设置开机自启
    pm2 save
  4. 配置环境变量
    使用 .env 文件管理敏感信息(数据库密码、密钥等),并确保 .gitignore 忽略该文件。


五、使用 Nginx 统一入口(关键!)

避免前后端分别占用不同端口,推荐使用 Nginx 作为反向和静态资源服务器。

示例 Nginx 配置(/etc/nginx/sites-available/default

server {
    listen 80;
    server_name your-domain.com;  # 或公网 IP

    # 前端:Vue SPA 路由支持
    location / {
        root /var/www/vue-app;
        try_files $uri $uri/ /index.html;
        expires 1h;
        add_header Cache-Control "public, must-revalidate";
    }

    # 后端 API 
    location /api/ {
        proxy_pass http://localhost:3000/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }

    # WebSocket 支持(如有)
    location /ws/ {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

测试并重载 Nginx:

sudo nginx -t
sudo systemctl reload nginx

✅ 优点:用户访问 http://your-domain.com 即可访问前端,API 请求自动转发到 Node.js。


六、域名与 HTTPS(可选但推荐)

  1. 绑定域名

    • 在阿里云控制台解析域名到 ECS 公网 IP。
  2. 申请免费 SSL 证书(Let’s Encrypt)
    使用 Certbot:

    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d your-domain.com

    自动配置 HTTPS 并启用自动续期。


七、安全与性能优化

  1. 隐藏服务器信息
    修改 Nginx 隐藏版本号:

    server_tokens off;
  2. 防止暴力攻击
    使用 fail2ban 监控 SSH 登录尝试。

  3. 日志监控

    • 查看 Nginx 日志:/var/log/nginx/access.log, error.log
    • 查看 PM2 日志:pm2 logs
  4. 定期备份
    备份数据库、代码、SSL 证书等重要数据。


八、常见问题排查

问题 解决方案
前端页面 404(刷新路由失效) 使用 try_files $uri $uri/ /index.html;
API 请求 502 Bad Gateway 检查 Node.js 是否运行,端口是否监听
跨域错误 不应出现,因 Nginx 统一了前后端
权限不足 检查文件夹权限和用户归属

总结:最佳实践清单

✅ 使用 Nginx 统一入口
✅ 前端部署在 /var/www/vue-app
✅ 后端用 PM2 守护进程运行
✅ API 通过 Nginx 反向(不暴露 3000 端口)
✅ 配置 HTTPS 提高安全性
✅ 使用域名而非 IP 访问
✅ 定期更新系统和软件包


通过以上配置,你可以在一台阿里云 ECS 上稳定运行 Vue + Node.js 全栈应用。后续可根据流量增长考虑前后端分离部署或使用负载均衡。