一个阿里云ECS服务器如何通过端口运行多个网页?

在阿里云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应用)

步骤:

  1. 启动多个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
  2. 在阿里云控制台开放对应端口

    • 登录 阿里云ECS控制台
    • 找到你的实例,进入 安全组配置
    • 添加安全组规则,放行以下端口(入方向):
      • 8080
      • 8081
      • 3000
      • ……(根据需要)
  3. 访问方式

    • http://<公网IP>:8080 → 网站A
    • http://<公网IP>:8081 → 网站B
    • http://<公网IP>:3000 → 网站C

✅ 优点:简单直接,适合测试或内部使用
❌ 缺点:URL带端口号,不够美观


✅ 方法二:使用 Nginx 反向(推荐生产环境)

通过 Nginx 将不同域名或路径映射到不同后端服务端口,用户访问时无需输入端口。

示例:

  • site1.com → 转发到 localhost:8080
  • site2.com → 转发到 localhost:8081
  • api.yoursite.com → 转发到 localhost:3000

步骤:

  1. 安装 Nginx

    sudo yum install nginx -y    # CentOS
    # 或
    sudo apt install nginx -y    # Ubuntu
  2. 启动并设置开机自启

    sudo systemctl start nginx
    sudo systemctl enable nginx
  3. 配置反向

    编辑配置文件:

    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.conf
    server {
       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;
       }
    }
  4. 测试并重载 Nginx

    sudo nginx -t        # 测试配置
    sudo systemctl reload nginx
  5. 域名解析

    • site1.comsite2.com 的 DNS A 记录指向你的ECS公网IP
  6. 安全组放行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 反向,结构更清晰,易于管理。


🔐 注意事项

  1. 安全组设置:务必在阿里云控制台放行所需端口(如80、443、8080等)
  2. 防火墙:检查服务器本地防火墙(如firewalld、ufw)是否放行端口
  3. 服务常驻:使用 systemdpm2supervisordocker 保证服务后台运行
  4. HTTPS:建议使用 Nginx + Let’s Encrypt 免费证书开启 HTTPS

总结

方法 是否推荐 适用场景
直接用不同端口访问 ⚠️ 仅测试 内部测试、临时演示
Nginx 反向(多域名) ✅ 强烈推荐 多个正式网站
Nginx 路径分发 ✅ 推荐 单域名多个子应用
Docker + Nginx ✅ 高级推荐 微服务、项目隔离

如果你提供具体的技术栈(如Node.js、Python、静态页面等),我可以给出更详细的配置示例。

未经允许不得转载:ECLOUD博客 » 一个阿里云ECS服务器如何通过端口运行多个网页?