在阿里云服务器上通过虚拟主机(Virtual Host)运行多个网站,本质上是利用 Web 服务器(如 Nginx 或 Apache)的域名解析 + 虚拟主机配置功能,让同一台服务器的不同域名请求路由到不同的网站目录。以下是详细步骤(以 Nginx 为例,Apache 思路类似):
✅ 前提条件
- 已购买并登录阿里云 ECS 实例;
- 已安装 Web 服务器(推荐 Nginx + PHP-FPM,或 Apache);
- 各网站的源代码已上传至服务器(如
/var/www/site1,/var/www/site2); - 各域名已完成 DNS 解析,指向该 ECS 的公网 IP(可在阿里云控制台“云解析 DNS”中设置 A 记录)。
🛠️ 操作步骤(Nginx 示例)
1️⃣ 创建网站目录与权限
sudo mkdir -p /var/www/site1 /var/www/site2
sudo chown -R www-data:www-data /var/www/site1 /var/www/site2 # Debian/Ubuntu
# CentOS/RHEL 可能用 nginx:nginx 或 apache:apache
sudo chmod -R 755 /var/www
2️⃣ 为每个网站创建独立的 Nginx 配置文件
例如:
site1.conf→ 对应example.comsite2.conf→ 对应blog.example.com
sudo nano /etc/nginx/sites-available/example.com
内容示例:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/site1;
index index.html index.php;
location ~ .php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 可选:开启 HTTPS(需配合 Let's Encrypt)
# listen 443 ssl;
# ssl_certificate /path/to/cert.pem;
# ssl_certificate_key /path/to/key.pem;
}
同理创建 blog.example.com 的配置文件,root 指向 /var/www/site2,server_name 设为 blog.example.com。
💡 提示:若使用阿里云安全组,请确保 80(HTTP) 和 443(HTTPS) 端口已放行。
3️⃣ 启用站点配置
# 软链接到 sites-enabled(Debian/Ubuntu)
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/blog.example.com /etc/nginx/sites-enabled/
# 删除默认站点(避免冲突)
sudo rm /etc/nginx/sites-enabled/default
# 测试配置语法
sudo nginx -t
# 重载配置
sudo systemctl reload nginx
4️⃣ 验证访问
在本地浏览器访问:
http://example.com→ 应显示 site1 内容http://blog.example.com→ 应显示 site2 内容
🔍 若未生效,检查:
- DNS 是否已生效(可用
ping example.com确认 IP 是否正确)- Nginx 是否监听 80 端口(
sudo netstat -tlnp | grep :80)- 防火墙/安全组规则(阿里云控制台 → 实例 → 安全组)
🔐 进阶建议
| 项目 | 建议 |
|---|---|
| SSL 证书 | 使用 Certbot 免费申请 Let’s Encrypt 证书,实现 HTTPS |
| 隔离性 | 每个网站使用独立用户(如 user1, user2),防止文件越权访问 |
| 备份 | 定期备份网站目录与数据库(可结合阿里云快照或脚本自动化) |
| 监控 | 安装 fail2ban 防暴力破解,用 htop/nmon 监控资源 |
❓常见问题
-
Q:能否共用一个 PHP 进程?
A:可以,但需注意不同网站使用相同PHP-FPMsocket 时,需确保user/group权限隔离,否则可能互相覆盖数据。 -
Q:阿里云轻量应用服务器 vs ECS?
A:两者均可支持虚拟主机,轻量版预装宝塔面板等工具更便捷;ECS 则更适合自定义高级配置。 -
Q:需要额外费用吗?
A:无需额外付费,仅消耗服务器带宽/CPU/内存资源。按量付费或包年包月 ECS 均适用。
如需我提供 Apache 配置模板、一键部署脚本,或帮你分析具体报错日志,欢迎告诉我你的系统类型(Ubuntu/CentOS?)和当前遇到的问题 😊
云小栈