在阿里云服务器(ECS)上部署多个 Web 服务是一个常见需求,可以通过多种方式实现。以下是几种常见的方法和步骤:
✅ 前提条件
- 你已经拥有一台阿里云 ECS 实例。
- 已经安装好 Web 服务运行所需的基础环境(如 Nginx、Apache、Docker、Tomcat、Node.js 等)。
- 每个 Web 服务监听不同的端口或使用不同的域名。
📌 方法一:使用不同端口运行多个服务(适用于开发/测试)
示例场景:
- Web 服务 A:运行在
8080 - Web 服务 B:运行在
3000
步骤:
-
分别启动两个服务
# 启动第一个服务 node app1.js --port 8080 # 启动第二个服务 node app2.js --port 3000 -
配置安全组规则
- 在阿里云控制台中,为 ECS 添加入方向规则,开放
8080和3000端口。
- 在阿里云控制台中,为 ECS 添加入方向规则,开放
-
访问方式
- 通过公网 IP + 端口访问:
http://<你的IP>:8080 http://<你的IP>:3000
- 通过公网 IP + 端口访问:
📌 方法二:使用 Nginx 反向X_X + 多域名(推荐用于生产环境)
示例场景:
- 域名 A:
web1.example.com→ 服务 A(端口 8080) - 域名 B:
web2.example.com→ 服务 B(端口 3000)
步骤:
1. 安装 Nginx
# Ubuntu/Debian
sudo apt update && sudo apt install nginx
# CentOS
sudo yum install nginx
2. 配置 Nginx 虚拟主机
创建两个配置文件或修改 /etc/nginx/sites-available/default:
web1.conf
server {
listen 80;
server_name web1.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
web2.conf
server {
listen 80;
server_name web2.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
然后建立软链接到 sites-enabled 目录,并删除默认配置(可选)。
3. 检查并重启 Nginx
sudo nginx -t
sudo systemctl restart nginx
4. 域名解析
- 在域名服务商(如阿里云 DNS)将
web1.example.com和web2.example.com解析到你的 ECS 公网 IP。
5. 访问测试
- 打开浏览器访问:
http://web1.example.com→ 显示服务 Ahttp://web2.example.com→ 显示服务 B
📌 方法三:使用 Docker 部署多个容器服务(适合微服务架构)
示例:
使用 Docker Compose 同时运行多个服务:
version: '3'
services:
web1:
image: your-web1-image
ports:
- "8080:80"
web2:
image: your-web2-image
ports:
- "3000:3000"
然后执行:
docker-compose up -d
同样需要配置 Nginx 或直接通过端口访问。
📌 方法四:使用 Apache 虚拟主机(替代 Nginx)
Apache 也可以实现类似 Nginx 的虚拟主机功能,但配置语法略有不同。如果你熟悉 Apache,可以使用它作为反代工具。
🔐 安全建议
- 最小化开放端口:只开放必要的端口,避免暴露不必要的服务。
- HTTPS 加密:使用 Let’s Encrypt 为每个域名配置 HTTPS。
- 防火墙设置:合理配置阿里云安全组和系统防火墙(如
iptables或firewalld)。
🧠 总结对比
| 方法 | 是否推荐 | 适用场景 | 特点 |
|---|---|---|---|
| 不同端口 | ⚠️一般 | 开发调试 | 简单但不够专业 |
| Nginx 反向X_X | ✅推荐 | 生产环境 | 支持多域名、负载均衡 |
| Docker 多容器 | ✅推荐 | 微服务架构 | 容易管理、隔离性好 |
| Apache 虚拟主机 | ✅可选 | Apache 用户 | 熟悉 Apache 的话可用 |
如果你能提供具体的服务类型(比如是 Node.js、Java、Python 还是静态网站),我可以给出更具体的部署建议。
是否需要我为你生成一个完整的 Nginx 配置示例?
CLOUD技术博