在阿里云ECS服务器上,可以通过以下几种方式实现通过不同端口运行多个网页服务。每个网页服务监听不同的端口,从而实现多站点共存。
✅ 方法一:不同端口运行多个Web服务(最简单)
假设你有多个网站(如 site1.com、site2.com),你可以让每个网站运行在不同的端口上。
示例:
- 网站 A:运行在
http://your-server-ip:8080 - 网站 B:运行在
http://your-server-ip:8081 - 网站 C:运行在
http://your-server-ip:3000(如Node.js应用)
步骤:
-
启动多个Web服务并绑定不同端口
# 网站A(Python Flask示例) flask run --host=0.0.0.0 --port=8080 # 网站B(Node.js示例) node app2.js # 在代码中监听 8081 端口 # 网站C(静态文件,使用http-server) npx http-server -p 3000 -
在阿里云控制台开放对应端口
- 登录 阿里云ECS控制台
- 找到你的实例,进入 安全组配置
- 添加安全组规则,放行以下端口(入方向):
- 8080
- 8081
- 3000
- ……(根据需要)
-
访问方式
http://<公网IP>:8080→ 网站Ahttp://<公网IP>:8081→ 网站Bhttp://<公网IP>:3000→ 网站C
✅ 优点:简单直接,适合测试或内部使用
❌ 缺点:URL带端口号,不够美观
✅ 方法二:使用 Nginx 反向(推荐生产环境)
通过 Nginx 将不同域名或路径映射到不同后端服务端口,用户访问时无需输入端口。
示例:
site1.com→ 转发到localhost:8080site2.com→ 转发到localhost:8081api.yoursite.com→ 转发到localhost:3000
步骤:
-
安装 Nginx
sudo yum install nginx -y # CentOS # 或 sudo apt install nginx -y # Ubuntu -
启动并设置开机自启
sudo systemctl start nginx sudo systemctl enable nginx -
配置反向
编辑配置文件:
sudo vim /etc/nginx/conf.d/site1.conf内容:
server { listen 80; server_name site1.com www.site1.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }创建另一个配置:
sudo vim /etc/nginx/conf.d/site2.confserver { listen 80; server_name site2.com www.site2.com; location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
测试并重载 Nginx
sudo nginx -t # 测试配置 sudo systemctl reload nginx -
域名解析
- 将
site1.com和site2.com的 DNS A 记录指向你的ECS公网IP
- 将
-
安全组放行80端口
- 在阿里云安全组中放行 80端口(HTTP)
✅ 优点:用户访问无端口,支持多域名,可扩展HTTPS
✅ 推荐用于正式项目
✅ 方法三:使用路径区分(单域名多应用)
如果你只有一个域名,也可以通过路径区分:
yoursite.com/app1→ 后端服务1(端口8080)yoursite.com/app2→ 后端服务2(端口8081)
Nginx 配置示例:
server {
listen 80;
server_name yoursite.com;
location /app1/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
}
location /app2/ {
proxy_pass http://127.0.0.1:8081/;
proxy_set_header Host $host;
}
}
✅ 方法四:使用Docker + Nginx(高级)
用 Docker 运行多个容器(每个容器一个网站),通过 Nginx 统一:
# 启动两个容器,映射不同内部端口
docker run -d -p 8080:80 my-website1
docker run -d -p 8081:80 my-website2
再用 Nginx 反向,结构更清晰,易于管理。
🔐 注意事项
- 安全组设置:务必在阿里云控制台放行所需端口(如80、443、8080等)
- 防火墙:检查服务器本地防火墙(如firewalld、ufw)是否放行端口
- 服务常驻:使用
systemd、pm2、supervisor或docker保证服务后台运行 - HTTPS:建议使用 Nginx + Let’s Encrypt 免费证书开启 HTTPS
总结
| 方法 | 是否推荐 | 适用场景 |
|---|---|---|
| 直接用不同端口访问 | ⚠️ 仅测试 | 内部测试、临时演示 |
| Nginx 反向(多域名) | ✅ 强烈推荐 | 多个正式网站 |
| Nginx 路径分发 | ✅ 推荐 | 单域名多个子应用 |
| Docker + Nginx | ✅ 高级推荐 | 微服务、项目隔离 |
如果你提供具体的技术栈(如Node.js、Python、静态页面等),我可以给出更详细的配置示例。
ECLOUD博客