如何在一台阿里云服务器上搭建多个网站?

在阿里云 ECS(云服务器)上搭建多个网站,核心逻辑在于“复用同一台服务器的 IP 和端口,通过域名或路径区分不同站点”。这主要依赖于 Web 服务器(如 Nginx、Apache)的虚拟主机(Virtual Host)配置。

以下是基于当前主流技术栈(Linux + Nginx + PHP/Node.js/Java)的标准实操方案,分为准备阶段核心配置安全与优化三个部分。

一、 前置准备:合规与资源检查

  1. 域名备案(ICP)
    • 关键约束:在中国大陆境内,所有通过 HTTP/HTTPS 访问的网站必须完成 ICP 备案。阿里云提供便捷的备案服务,但需提前规划,因为审核需要时间。未备案域名无法解析到国内 ECS 的 80/443 端口。
  2. ECS 实例规格
    • 确保你的 ECS 配置(CPU/内存)足以支撑多站点的并发需求。如果每个站点流量较大,建议单独购买高配实例;如果是个人博客或小型展示站,低配实例即可。
  3. 安全组配置
    • 登录阿里云控制台 -> 网络与安全 -> 安全组。
    • 确保入方向规则已开放 TCP 80 (HTTP) 和 TCP 443 (HTTPS)。这是 Web 服务的基础。

二、 核心步骤:以 Nginx 为例搭建多站点

Nginx 因其轻量、高性能,是目前国内最流行的 Web 服务器选择。我们使用 Server Block(类似 Apache 的 VirtualHost)来实现多站点隔离。

1. 安装基础环境

假设你使用的是 CentOS 7/8 或 Ubuntu 20.04+。

# CentOS 示例
yum install nginx php-fpm mysql-server -y
systemctl start nginx
systemctl enable nginx

2. 创建网站目录结构

为每个网站创建独立的目录,便于管理和权限控制。

mkdir -p /var/www/html/site1.com
mkdir -p /var/www/html/site2.com
# 将你的代码上传至对应目录,例如 site1.com 放 WordPress,site2.com 放 Vue 静态页面

3. 配置 Nginx Server Blocks

Nginx 的主配置文件通常在 /etc/nginx/nginx.conf,但最佳实践是将每个站点的配置拆分为独立文件,存放在 /etc/nginx/conf.d//etc/nginx/sites-available/ 中。

创建站点 1 的配置 (/etc/nginx/conf.d/site1.conf):

server {
    listen 80;
    server_name site1.com www.site1.com; # 替换为你的实际域名

    root /var/www/html/site1.com;
    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP 处理示例
    location ~ .php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

创建站点 2 的配置 (/etc/nginx/conf.d/site2.conf):

server {
    listen 80;
    server_name site2.com www.site2.com; # 替换为你的实际域名

    root /var/www/html/site2.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

注意server_name 必须与你购买的域名完全一致,且该域名已通过 DNS 解析指向你的 ECS 公网 IP。

4. 测试并重启 Nginx

# 测试配置文件语法是否正确
nginx -t

# 如果显示 syntax is ok,则重启服务
systemctl restart nginx

5. 启用 HTTPS(推荐)

为了安全和 SEO,强烈建议启用 SSL。可以使用 Let’s Encrypt 免费证书,或通过阿里云云解析提供的免费 SSL 证书。

以 Certbot 为例:

# 安装 certbot
apt-get install certbot python3-certbot-nginx  # Ubuntu
# 或 yum install certbot python3-certbot-nginx  # CentOS

# 自动获取证书并修改 Nginx 配置
certbot --nginx -d site1.com -d www.site1.com
certbot --nginx -d site2.com -d www.site2.com

Certbot 会自动更新你的 .conf 文件,添加 443 端口监听和 SSL 参数。


三、 替代方案:使用宝塔面板(适合新手)

如果你不熟悉命令行,或者希望图形化管理,宝塔面板(Baota Panel) 是国内非常流行的运维工具。

  1. 安装宝塔:在 ECS 终端运行一键安装脚本(支持 CentOS/Ubuntu)。
  2. 登录面板:通过浏览器访问 http://<ECS公网IP>:8888
  3. 添加网站
    • 点击“网站” -> “添加站点”。
    • 输入域名,选择根目录。
    • 可一键开启 SSL。
  4. 部署应用
    • 对于 WordPress、PHP 项目,可直接在面板中选择“从市场部署”,实现一键安装。
    • 对于 Java (.jar)、Node.js 应用,可使用面板的“进程守护”功能进行托管。

优势:可视化操作,自带防火墙、日志管理、数据库管理,降低运维门槛。
劣势:占用少量系统资源,高级定制灵活性略低于纯 Nginx 配置。


四、 关键注意事项与避坑指南

  1. 端口冲突

    • 确保没有其他服务占用 80/443 端口。
    • 如果使用 Docker,注意容器内的端口映射不要与宿主机冲突。
  2. DNS 解析

    • 建议在阿里云“云解析 DNS”中添加 A 记录,将 @www 分别指向你的 ECS 公网 IP。
    • 等待 TTL 生效后,才能通过域名访问。
  3. 资源隔离与监控

    • 多个网站共用一台服务器,若其中一个站点遭遇 DDoS 攻击或流量激增,可能耗尽 CPU/内存,影响其他站点。
    • 建议:设置 Nginx 的 worker_connectionslimit_req 限制单个域名的请求速率。
    • 使用阿里云“云监控”设置 CPU、内存告警阈值。
  4. 备份策略

    • 定期备份网站文件和数据库。
    • 利用阿里云“快照”功能,对 ECS 磁盘创建定时快照,防止误操作导致数据丢失。
  5. 合规性重申

    • 严禁搭建涉及X_X、X_X、X_X敏感内容的网站。
    • 所有上线网站必须完成 ICP 备案,否则会被阿里云封禁 80/443 端口。
    • 如需接入 CDN 或对象存储 OSS,也需确保内容合规。

总结

在一台阿里云服务器上搭建多个网站,本质是 Web 服务器的虚拟主机配置

  • 技术派:推荐使用 Nginx + 手动配置,灵活可控,性能最优。
  • 效率派:推荐使用 宝塔面板,开箱即用,适合快速部署和管理。

无论选择哪种方式,请务必优先完成 ICP 备案安全组端口放行,这是服务可用的前提。

未经允许不得转载:CLOUD云枢 » 如何在一台阿里云服务器上搭建多个网站?