加油
努力

如何通过虚拟主机在同一台阿里云服务器上运行多个网站?

在阿里云服务器上通过虚拟主机(Virtual Host)运行多个网站,本质上是利用 Web 服务器(如 Nginx 或 Apache)的域名解析 + 虚拟主机配置功能,让同一台服务器的不同域名请求路由到不同的网站目录。以下是详细步骤(以 Nginx 为例,Apache 思路类似):


✅ 前提条件

  1. 已购买并登录阿里云 ECS 实例;
  2. 已安装 Web 服务器(推荐 Nginx + PHP-FPM,或 Apache);
  3. 各网站的源代码已上传至服务器(如 /var/www/site1, /var/www/site2);
  4. 各域名已完成 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.com
  • site2.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/site2server_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-FPM socket 时,需确保 user/group 权限隔离,否则可能互相覆盖数据。

  • Q:阿里云轻量应用服务器 vs ECS?
    A:两者均可支持虚拟主机,轻量版预装宝塔面板等工具更便捷;ECS 则更适合自定义高级配置。

  • Q:需要额外费用吗?
    A:无需额外付费,仅消耗服务器带宽/CPU/内存资源。按量付费或包年包月 ECS 均适用。


如需我提供 Apache 配置模板一键部署脚本,或帮你分析具体报错日志,欢迎告诉我你的系统类型(Ubuntu/CentOS?)和当前遇到的问题 😊

云服务器