在阿里云 ECS(云服务器)上搭建多个网站,核心逻辑在于“复用同一台服务器的 IP 和端口,通过域名或路径区分不同站点”。这主要依赖于 Web 服务器(如 Nginx、Apache)的虚拟主机(Virtual Host)配置。
以下是基于当前主流技术栈(Linux + Nginx + PHP/Node.js/Java)的标准实操方案,分为准备阶段、核心配置、安全与优化三个部分。
一、 前置准备:合规与资源检查
- 域名备案(ICP)
- 关键约束:在中国大陆境内,所有通过 HTTP/HTTPS 访问的网站必须完成 ICP 备案。阿里云提供便捷的备案服务,但需提前规划,因为审核需要时间。未备案域名无法解析到国内 ECS 的 80/443 端口。
- ECS 实例规格
- 确保你的 ECS 配置(CPU/内存)足以支撑多站点的并发需求。如果每个站点流量较大,建议单独购买高配实例;如果是个人博客或小型展示站,低配实例即可。
- 安全组配置
- 登录阿里云控制台 -> 网络与安全 -> 安全组。
- 确保入方向规则已开放 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) 是国内非常流行的运维工具。
- 安装宝塔:在 ECS 终端运行一键安装脚本(支持 CentOS/Ubuntu)。
- 登录面板:通过浏览器访问
http://<ECS公网IP>:8888。 - 添加网站:
- 点击“网站” -> “添加站点”。
- 输入域名,选择根目录。
- 可一键开启 SSL。
- 部署应用:
- 对于 WordPress、PHP 项目,可直接在面板中选择“从市场部署”,实现一键安装。
- 对于 Java (.jar)、Node.js 应用,可使用面板的“进程守护”功能进行托管。
优势:可视化操作,自带防火墙、日志管理、数据库管理,降低运维门槛。
劣势:占用少量系统资源,高级定制灵活性略低于纯 Nginx 配置。
四、 关键注意事项与避坑指南
-
端口冲突
- 确保没有其他服务占用 80/443 端口。
- 如果使用 Docker,注意容器内的端口映射不要与宿主机冲突。
-
DNS 解析
- 建议在阿里云“云解析 DNS”中添加 A 记录,将
@和www分别指向你的 ECS 公网 IP。 - 等待 TTL 生效后,才能通过域名访问。
- 建议在阿里云“云解析 DNS”中添加 A 记录,将
-
资源隔离与监控
- 多个网站共用一台服务器,若其中一个站点遭遇 DDoS 攻击或流量激增,可能耗尽 CPU/内存,影响其他站点。
- 建议:设置 Nginx 的
worker_connections和limit_req限制单个域名的请求速率。 - 使用阿里云“云监控”设置 CPU、内存告警阈值。
-
备份策略
- 定期备份网站文件和数据库。
- 利用阿里云“快照”功能,对 ECS 磁盘创建定时快照,防止误操作导致数据丢失。
-
合规性重申
- 严禁搭建涉及X_X、X_X、X_X敏感内容的网站。
- 所有上线网站必须完成 ICP 备案,否则会被阿里云封禁 80/443 端口。
- 如需接入 CDN 或对象存储 OSS,也需确保内容合规。
总结
在一台阿里云服务器上搭建多个网站,本质是 Web 服务器的虚拟主机配置。
- 技术派:推荐使用 Nginx + 手动配置,灵活可控,性能最优。
- 效率派:推荐使用 宝塔面板,开箱即用,适合快速部署和管理。
无论选择哪种方式,请务必优先完成 ICP 备案 和 安全组端口放行,这是服务可用的前提。
CLOUD云枢