在阿里云 ECS(云服务器)上部署多个网站或应用,核心逻辑在于“资源隔离”与“流量分发”。根据业务规模、技术栈和运维能力,主要有以下几种主流方案,从简单到复杂排列:
方案一:基于 Nginx/Apache 的虚拟主机(Virtual Hosts)
适用场景:静态网站、PHP/Python/Node.js 轻量级应用,共享同一台服务器资源,成本低。
这是最经典的方式,通过配置 Web 服务器(如 Nginx),利用 域名(Server Name) 或 端口(Port) 将请求分发到不同的后端服务或目录。
1. 基于域名的虚拟主机(推荐)
假设你有两个域名 a.com 和 b.com,都解析到同一台 ECS 公网 IP。
- 步骤简述:
- 安装 Nginx:
sudo apt-get install nginx(Ubuntu) 或yum install nginx(CentOS)。 - 创建站点目录:
mkdir -p /var/www/a.com/html和/var/www/b.com/html。 - 编写配置文件:
- 在
/etc/nginx/conf.d/下创建a.conf:server { listen 80; server_name a.com www.a.com; root /var/www/a.com/html; index index.html; location / { try_files $uri $uri/ =404; } } - 同理创建
b.conf,修改server_name和root路径。
- 在
- 重启 Nginx:
sudo systemctl restart nginx。 - 注意:需在阿里云控制台安全组中开放 80 (HTTP) 和 443 (HTTPS) 端口。
- 安装 Nginx:
2. 基于端口的反向X_X
如果应用是 Node.js、Go、Java 等独立进程监听不同端口(如 3000, 8080)。
- 配置示例:
server { listen 80; server_name app1.example.com; location / { proxy_pass http://localhost:3000; # 转发给本地运行的 Java/Node 应用 proxy_set_header Host $host; } } server { listen 80; server_name app2.example.com; location / { proxy_pass http://localhost:8080; # 转发给另一个应用 proxy_set_header Host $host; } }
方案二:Docker 容器化部署(强烈推荐)
适用场景:多语言混合架构、需要环境隔离、便于迁移和扩展。
使用 Docker 可以将每个应用及其依赖打包成独立容器,互不干扰,管理更清晰。
实施步骤:
-
安装 Docker:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun sudo systemctl enable --now docker -
使用 Docker Compose 管理多应用:
创建一个docker-compose.yml文件,定义多个服务:version: '3' services: frontend: image: nginx:alpine ports: - "80:80" volumes: - ./frontend/conf/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - api-backend api-backend: build: ./api environment: - NODE_ENV=production expose: - "3000" # 内部通信,不直接暴露给公网 database: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: secret volumes: - db_data:/var/lib/mysql volumes: db_data: -
Nginx 作为统一入口:
在前端的 Nginx 配置中,根据域名或 URL 路径反向X_X到api-backend容器。 -
启动:
docker compose up -d
优势:即使某个应用崩溃,不影响其他应用;升级方便;环境一致性高。
方案三:阿里云负载均衡 SLB + 多台 ECS(生产级架构)
适用场景:高并发、高可用要求、大型项目、需要弹性伸缩。
单台 ECS 存在单点故障风险。当访问量增大时,应拆分服务。
架构设计:
- 购买 SLB(Server Load Balancer):
- 在阿里云控制台创建 SLB 实例,获取一个 VIP(虚拟 IP)。
- 注册后端服务器组:
- 创建多个 ECS 实例(例如:Web 服务器集群、API 服务器集群、数据库主从)。
- 将这些 ECS 加入 SLB 的后端服务器组。
- 配置监听规则:
- HTTP/HTTPS 监听器绑定域名。
- 设置健康检查,确保只将流量转发给健康的 ECS。
- 域名解析:
- 将域名 CNAME 指向 SLB 的 VIP。
优势:自动负载均衡、支持 SSL 卸载、高可用、可横向扩展。
方案四:使用阿里云轻量应用服务器(Simple Application Server)
适用场景:个人开发者、小型博客、测试环境、预算有限。
如果你的需求比较简单(< 3 个中小型网站),可以考虑直接使用 轻量应用服务器。
- 特点:
- 集成度高:自带防火墙、监控、备份。
- 应用镜像:一键部署 WordPress、LAMP、LNMP、Docker 等环境。
- 套餐制:带宽和应用存储捆绑,价格通常比同等配置的 ECS 更低。
- 操作:
- 购买轻量应用服务器。
- 选择“LNMP”或“WordPress”镜像。
- 通过控制台提供的远程连接或 FTP/SFTP 上传代码。
- 如需部署多个站点,可在系统内手动配置 Nginx 虚拟主机(同方案一)。
关键注意事项(合规与安全)
-
ICP 备案:
- 必须项:在中国大陆地区,所有通过 ECS 或轻量应用服务器提供 Web 服务(80/443 端口)的网站,必须先完成 ICP 备案,否则会被阿里云阻断访问。
- 未备案域名无法解析到国内 ECS 的 80/443 端口。
-
安全组配置:
- 仅开放必要端口(80, 443, SSH 22)。
- 避免开放数据库端口(3306, 6379)到公网,仅允许内网访问。
- 建议启用阿里云云盾(安骑士)防护。
-
SSL 证书:
- 推荐使用 HTTPS。可通过阿里云免费申请 DV 证书,或在 Nginx/Docker 中使用 Let’s Encrypt 自动续期。
-
性能瓶颈:
- 单台 ECS 资源有限(CPU/内存/IO)。若发现负载过高,优先优化代码或使用 CDN 提速静态资源,而非盲目升级配置。
- 动态内容考虑接入 OSS + CDN 组合。
总结建议
| 你的需求 | 推荐方案 |
|---|---|
| 个人博客、小站、学习用途 | 轻量应用服务器 或 ECS + Nginx 虚拟主机 |
| 多语言应用、微服务、追求稳定隔离 | ECS + Docker Compose |
| 企业级应用、高并发、需高可用 | SLB + 多台 ECS + RDS/OSS |
| 有备案但无技术背景 | 轻量应用服务器 + 一键镜像 |
对于大多数初学者和中小企业,ECS + Docker + Nginx 反向X_X 是目前最平衡灵活性、稳定性和成本的选择。
CLOUD云枢