加油
努力

如何在阿里云ECS上配置多个虚拟主机运行不同域名?

在阿里云ECS上配置多个虚拟主机(Virtual Hosts)运行不同域名,通常是在Web服务器(如 Apache 或 Nginx)中通过 基于名称的虚拟主机 实现。以下是详细步骤:


✅ 前提条件

  1. 已有一台阿里云ECS实例(Linux系统,如 CentOS、Ubuntu)。
  2. 已安装 Web 服务器(Apache 或 Nginx)。
  3. 已购买并备案多个域名,并将它们的 DNS 解析指向 ECS 的公网 IP。
  4. 安全组已开放 HTTP(80端口)和 HTTPS(443端口)。

方法一:使用 Nginx 配置多虚拟主机(推荐)

步骤 1:安装 Nginx(以 Ubuntu 为例)

sudo apt update
sudo apt install nginx -y

步骤 2:创建网站目录结构

为每个域名创建独立的网站根目录:

sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html

# 创建测试页面
echo "<h1>Welcome to site1.com</h1>" | sudo tee /var/www/site1.com/html/index.html
echo "<h1>Welcome to site2.com</h1>" | sudo tee /var/www/site2.com/html/index.html

# 设置权限
sudo chown -R www-data:www-data /var/www

步骤 3:创建虚拟主机配置文件

Nginx 配置文件通常位于 /etc/nginx/sites-available/

创建 site1.com 的配置

sudo nano /etc/nginx/sites-available/site1.com

内容如下:

server {
    listen 80;
    server_name site1.com www.site1.com;

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

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

创建 site2.com 的配置

sudo nano /etc/nginx/sites-available/site2.com
server {
    listen 80;
    server_name site2.com www.site2.com;

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

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

步骤 4:启用站点(创建符号链接)

sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/

⚠️ 可删除默认站点避免冲突:

sudo rm /etc/nginx/sites-enabled/default

步骤 5:测试配置并重启 Nginx

sudo nginx -t           # 测试配置是否正确
sudo systemctl reload nginx   # 重新加载配置

方法二:使用 Apache 配置多虚拟主机

步骤 1:安装 Apache

sudo apt update
sudo apt install apache2 -y

步骤 2:创建网站目录

sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html

echo "<h1>Site1.com Home</h1>" | sudo tee /var/www/site1.com/public_html/index.html
echo "<h1>Site2.com Home</h1>" | sudo tee /var/www/site2.com/public_html/index.html

步骤 3:创建虚拟主机配置文件

sudo nano /etc/apache2/sites-available/site1.com.conf

内容:

<VirtualHost *:80>
    ServerName site1.com
    ServerAlias www.site1.com
    DocumentRoot /var/www/site1.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>

同样创建 site2.com.conf

步骤 4:启用站点并重启 Apache

sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
sudo systemctl reload apache2

✅ 域名解析设置(DNS)

登录你的域名注册商或阿里云控制台:

  1. 进入「域名解析」管理页面。
  2. 添加 A 记录,将每个域名指向 ECS 的公网 IP:
记录类型 主机记录 记录值(IP)
A @ 公网IP
A www 公网IP

示例:
site1.comA123.123.123.123
www.site1.comA123.123.123.123


✅ 验证配置

在浏览器中分别访问:

  • http://site1.com
  • http://site2.com

应看到各自对应的页面。


🔐 可选:为每个站点配置 HTTPS(SSL证书)

推荐使用 Let’s Encrypt + Certbot:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d site1.com -d www.site1.com

Certbot 会自动修改 Nginx 配置并重定向到 HTTPS。


🛡️ 注意事项

  1. 备案问题:中国大陆地区域名必须完成 ICP 备案才能访问。
  2. 防火墙:确保 ECS 安全组放行 80 和 443 端口。
  3. SELinux/AppArmor:某些系统需调整安全策略。
  4. 日志监控:定期查看日志排查问题。

✅ 总结:
通过 Nginx/Apache 的虚拟主机功能,结合正确的 DNS 解析和目录结构,即可在一台阿里云 ECS 上运行多个不同域名的网站。Nginx 因其高性能和简洁配置更受现代开发者青睐。

如有需要,可进一步使用 Docker 或反向X_X实现更复杂的架构。

云服务器