在阿里云服务器(ECS)上部署多个应用,可以通过以下几种常见方式来实现。这里将详细介绍不同方法的配置步骤和注意事项。
🧩 一、基本思路
要在一台阿里云 ECS 服务器上部署多个应用,核心是让这些应用监听不同的端口或使用反向统一管理访问入口。
🛠️ 二、常用部署方式
✅ 方法1:每个应用监听不同端口
示例:
- 应用 A 使用
http://你的IP:3000 - 应用 B 使用
http://你的IP:8080
步骤:
-
编写/启动多个服务
- 每个应用分别绑定不同的端口。
- 如 Node.js、Python Flask、Spring Boot 等框架都可以设置端口。
-
开放安全组端口
- 登录 阿里云控制台
- 找到对应 ECS 实例 → 安全组 → 编辑入方向规则
- 添加允许
TCP协议,端口如3000,8080等
-
使用进程管理工具守护进程
- 推荐使用
PM2(Node.js)、systemd或supervisor来管理多个应用的启动与重启
- 推荐使用
示例命令(Node.js + PM2):
# 安装 pm2
npm install pm2 -g
# 启动第一个应用
pm2 start app1.js --name "app1" -- --port 3000
# 启动第二个应用
pm2 start app2.js --name "app2" -- --port 8080
✅ 方法2:使用 Nginx 做反向(推荐)
优点:
- 统一入口(如 www.example.com)
- 多个子路径或子域名映射不同应用
- 支持 HTTPS、负载均衡等高级功能
示例:
www.example.com/app1→ 转发到本地localhost:3000www.example.com/app2→ 转发到本地localhost:8080
或者:
app1.example.com→localhost:3000app2.example.com→localhost:8080
配置 Nginx 示例:
安装 Nginx(CentOS):
sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
编辑配置文件 /etc/nginx/conf.d/multi_app.conf:
server {
listen 80;
server_name app1.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name app2.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
检查并重载配置:
sudo nginx -t
sudo systemctl reload nginx
DNS 设置:
- 在域名服务商(如阿里云域名控制台)添加两条 A 记录:
app1.example.com→ 指向你的 ECS 公网 IPapp2.example.com→ 指向你的 ECS 公网 IP
📦 三、容器化部署(Docker + Docker Compose)
如果你的应用比较复杂,可以考虑使用 Docker 容器化部署多个应用。
示例 docker-compose.yml:
version: '3'
services:
app1:
image: your-app1-image
ports:
- "3000:3000"
app2:
image: your-app2-image
ports:
- "8080:8080"
然后运行:
docker-compose up -d
你也可以配合 Nginx 做反向,对外只暴露 80 和 443 端口。
🔐 四、安全建议
- 不要开放不必要的端口
- 使用防火墙(iptables 或 firewalld)做进一步限制
- 如果使用 Nginx,可开启 HTTPS(如 Let’s Encrypt)
- 使用 SSL 加密传输数据,防止被中间人攻击
🧪 五、验证是否部署成功
-
查看服务是否运行:
ps aux | grep node -
查看端口监听情况:
netstat -tuln | grep :3000 -
浏览器访问测试:
http://你的公网IP:3000 http://app1.example.com
✅ 总结
| 方式 | 是否推荐 | 特点 |
|---|---|---|
| 多端口直接访问 | ⚠️ 一般 | 简单但不够优雅,需开放多个端口 |
| Nginx 反向 | ✅ 强烈推荐 | 灵活、美观、支持多域名/路径 |
| Docker 容器化 | ✅ 推荐 | 易于维护和扩展,适合微服务架构 |
如果你告诉我具体你要部署哪些类型的应用(如 Node.js、Java、Python、Django、React、Vue、NestJS 等),我可以提供更具体的部署脚本和配置示例。欢迎继续提问!
CLOUD技术博