在阿里云服务器(ECS)上部署多个 Web 项目是一个常见的需求,通常可以通过以下几种方式实现:
✅ 一、准备工作
- 购买并配置好阿里云 ECS 实例
- 系统建议:CentOS / Ubuntu / Windows Server
- 安装必要的运行环境:Nginx/Apache/Tomcat/Node.js/Docker 等
- 备案域名(如果对外提供服务)
- 开放端口:如 80、443、8080 等
✅ 二、常见部署方案
方法一:使用不同端口区分多个项目
原理:
每个 Web 项目监听不同的端口(例如:8080、8081、8082)
示例:
- 项目 A:
http://yourdomain.com:8080 - 项目 B:
http://yourdomain.com:8081
部署方式:
启动多个服务分别监听不同端口即可。
优点:
简单易行,适合测试或内部使用。
缺点:
URL 中带有端口号,不太美观,不利于 SEO。
方法二:使用 Nginx 反向X_X + 多个域名(推荐)
原理:
通过配置 Nginx 的虚拟主机,将不同域名映射到本地的不同服务端口。
示例:
project1.example.com→ 映射到localhost:8080project2.example.com→ 映射到localhost:8081
步骤如下:
- 安装 Nginx
# CentOS
sudo yum install nginx
# Ubuntu
sudo apt update && sudo apt install nginx
- 配置 Nginx 虚拟主机
编辑 /etc/nginx/conf.d/project1.conf:
server {
listen 80;
server_name project1.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
编辑 /etc/nginx/conf.d/project2.conf:
server {
listen 80;
server_name project2.example.com;
location / {
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 重启 Nginx 生效配置
sudo systemctl restart nginx
- 配置 DNS 解析
- 在阿里云控制台解析你的域名,指向 ECS 的公网 IP
优点:
- URL 漂亮,利于 SEO
- 支持 HTTPS(可配合 Let’s Encrypt)
- 支持负载均衡、限流等高级功能
方法三:使用 Docker 部署多个容器(进阶)
原理:
为每个 Web 项目创建独立的 Docker 容器,并通过 Nginx 或 Traefik 做反向X_X。
示例结构:
- 容器 A:监听 8080
- 容器 B:监听 8081
- Nginx 映射域名到对应容器端口
优势:
- 环境隔离、易于扩展
- 方便版本管理和自动化部署
示例命令:
docker run -d -p 8080:80 my-web-app1
docker run -d -p 8081:80 my-web-app2
然后使用 Nginx 配置反向X_X即可。
✅ 三、其他注意事项
| 事项 | 说明 |
|---|---|
| 防火墙设置 | 确保安全组允许访问相关端口(如 80、443) |
| HTTPS 支持 | 使用阿里云 SSL 证书或 Let’s Encrypt |
| 日志管理 | 每个项目应有独立日志目录便于排查问题 |
| 资源监控 | 多项目可能消耗更多 CPU 和内存,注意资源分配 |
✅ 四、总结对比
| 部署方式 | 是否推荐 | 适用场景 |
|---|---|---|
| 不同端口 | ❌ 一般 | 内部测试 |
| Nginx 虚拟主机 | ✅ 推荐 | 多个正式网站 |
| Docker + Nginx | ✅ 推荐 | 微服务、多项目部署 |
如果你告诉我你用的是什么语言写的 Web 应用(比如 Node.js、Java、Python、PHP),我可以给你更具体的部署示例。欢迎继续提问!
ECLOUD博客