如何在一台阿里云ECS实例上部署前端和后端应用?

在阿里云 ECS 实例上同时部署前端和后端应用,通常有几种主流方案。以下是最推荐的生产级方案使用 Nginx 作为反向X_X,将前端静态资源与后端 API 请求分离处理


✅ 推荐架构(Nginx + Node.js/Java/Python 等后端)

用户 → ECS (Nginx) 
       ├── /api/* → 转发到后端服务 (如 localhost:3000)
       └── /*     → 返回前端静态文件 (如 /var/www/html)

📦 前提准备

  1. 购买阿里云 ECS 实例(推荐 CentOS 7+/Ubuntu 20.04+)
  2. 安全组配置:开放端口 80(HTTP)、443(HTTPS,可选)
  3. SSH 登录服务器

🛠️ 步骤详解

第一步:安装基础软件

以 Ubuntu 为例(CentOS 命令类似):

# 更新包管理器
sudo apt update

# 安装 Nginx
sudo apt install nginx -y

# 安装 Node.js(如果后端是 Node.js)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y

# 其他后端语言同理,如 Python、Java 等

第二步:部署前端应用

假设你的前端项目已构建为静态文件(如 Vue/React 打包后的 dist/ 目录):

# 创建前端存放目录
sudo mkdir -p /var/www/myapp/frontend

# 上传或复制前端构建文件到此目录
# 例如通过 scp 或 git clone
scp -r ./dist/* user@your-ecs-ip:/var/www/myapp/frontend/

# 设置权限
sudo chown -R www-data:www-data /var/www/myapp/frontend

第三步:部署后端应用

假设后端是一个 Node.js Express 应用:

# 创建后端目录
sudo mkdir -p /var/www/myapp/backend

# 上传后端代码
scp -r ./backend/* user@your-ecs-ip:/var/www/myapp/backend/

# 安装依赖并启动后端服务
cd /var/www/myapp/backend
npm install
npm start

💡 建议:使用 pm2 管理后端进程,确保崩溃后自动重启:

npm install -g pm2
pm2 start app.js --name "my-backend"
pm2 save
pm2 startup

第四步:配置 Nginx 反向X_X

编辑 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/default

替换内容为:

server {
    listen 80;
    server_name your-domain.com;  # 或使用 IP 地址

    # 前端静态资源
    location / {
        root /var/www/myapp/frontend;
        index index.html;
        try_files $uri $uri/ /index.html;  # SPA 路由支持
    }

    # 后端 API 接口
    location /api/ {
        proxy_pass http://127.0.0.1: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;
    }
}

⚠️ 注意:

  • 前端 try_files 用于支持 React/Vue 等 SPA 的路由跳转
  • /api/ 前缀需与前端调用后端时使用的路径一致

保存后测试并重载 Nginx:

sudo nginx -t          # 测试配置语法
sudo systemctl reload nginx

第五步:验证部署

  1. 浏览器访问 http://your-ecs-ip
  2. 前端页面正常加载
  3. 前端调用 /api/xxx 能正确转发到后端并返回数据

🔐 可选:配置 HTTPS(Let’s Encrypt)

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

按提示完成 SSL 证书配置,Nginx 会自动更新为 HTTPS。


🔄 其他部署方案对比

方案 适用场景 优点 缺点
Nginx 反向X_X(推荐) 生产环境通用 性能高、灵活、易维护 需手动配置
Docker Compose 多服务复杂项目 隔离性好、一键启停 学习成本高
PM2/Nginx 同机 简单 Node.js 项目 配置简单 扩展性差
阿里云轻量应用服务器 小型个人项目 成本低、集成度高 功能受限

🐳 Docker 方案示例(进阶)

如果使用 Docker,可简化部署:

# docker-compose.yml
version: '3'
services:
  frontend:
    image: nginx
    ports: ["80:80"]
    volumes:
      - ./frontend/dist:/usr/share/nginx/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - backend

  backend:
    build: ./backend
    ports: ["3000:3000"]
# nginx.conf
location /api/ {
    proxy_pass http://backend:3000;
}

启动:

docker compose up -d

✅ 最佳实践建议

  1. 使用域名 + CDN:提升访问速度和安全性
  2. 日志监控:配置 Nginx 日志 + PM2 日志收集
  3. 自动备份:定期备份前端文件和数据库
  4. 防火墙限制:仅开放 80/443 端口,后端端口不对外暴露
  5. CI/CD 自动化:结合 GitLab CI / GitHub Actions 实现自动部署

如有具体技术栈(如 Java Spring Boot、Python Flask、Go 等),可提供更针对性的配置方案。

未经允许不得转载:CLOUD技术博 » 如何在一台阿里云ECS实例上部署前端和后端应用?