加油
努力

如何在阿里云轻量应用服务器上部署多个不同域名的网站?

在阿里云轻量应用服务器上部署多个不同域名的网站,可以通过 Nginx 虚拟主机(Virtual Host) 的方式实现。以下是详细步骤:


✅ 前提条件

  1. 你已购买并配置好阿里云轻量应用服务器(如 Ubuntu/CentOS 系统)。
  2. 每个网站有独立的域名,并已完成域名解析(A 记录指向服务器公网 IP)。
  3. 服务器开放了 80(HTTP)和 443(HTTPS)端口(在轻量服务器控制台的安全组中设置)。

🛠️ 步骤一:安装 Nginx

# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y

# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install nginx -y

启动并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

访问服务器公网 IP,看到 Nginx 欢迎页即表示安装成功。


📁 步骤二:为每个网站创建独立目录

假设你要部署两个网站:

  • site1.com
  • site2.com

创建网站根目录:

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/site1.com/html
sudo chown -R www-data:www-data /var/www/site2.com/html
sudo chmod -R 755 /var/www

⚙️ 步骤三:配置 Nginx 虚拟主机

进入 Nginx 配置目录:

cd /etc/nginx/sites-available

注意:某些系统(如 CentOS)可能没有 sites-available 目录,需手动创建或直接使用 /etc/nginx/conf.d/

方法 1:使用 sites-availablesites-enabled(推荐 Ubuntu)

创建站点配置文件:

# site1.com
sudo tee /etc/nginx/sites-available/site1.com << 'EOF'
server {
    listen 80;
    server_name site1.com www.site1.com;

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

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

# site2.com
sudo tee /etc/nginx/sites-available/site2.com << 'EOF'
server {
    listen 80;
    server_name site2.com www.site2.com;

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

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

启用站点(创建软链接到 sites-enabled):

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

方法 2:直接使用 conf.d 目录(CentOS 常用)

将配置文件放入 /etc/nginx/conf.d/

sudo tee /etc/nginx/conf.d/site1.com.conf << 'EOF'
server {
    listen 80;
    server_name site1.com www.site1.com;

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

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

sudo tee /etc/nginx/conf.d/site2.com.conf << 'EOF'
server {
    listen 80;
    server_name site2.com www.site2.com;

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

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

✅ 步骤四:测试并重载 Nginx

sudo nginx -t  # 测试配置是否正确
sudo systemctl reload nginx

🔐 步骤五:配置 HTTPS(建议使用 Let’s Encrypt)

安装 Certbot:

# Ubuntu
sudo apt install certbot python3-certbot-nginx -y

# CentOS
sudo yum install certbot python3-certbot-nginx -y

为每个域名申请 SSL 证书:

sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com

Certbot 会自动修改 Nginx 配置,启用 HTTPS 并设置自动续期。


🌐 域名解析设置(重要)

登录你的域名管理平台(如阿里云 DNS),为每个域名添加 A 记录:

主机记录 记录类型 记录值(服务器公网 IP)
@ A 123.123.123.123
www CNAME site1.com

123.123.123.123 替换为你的轻量服务器公网 IP。


🧪 验证访问

打开浏览器,分别访问:

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

如果看到对应页面,说明部署成功!


📝 补充建议

  • 防火墙:确保轻量服务器控制台安全组放行 80/443 端口。
  • 备份配置:修改前备份 Nginx 配置。
  • 日志排查:出错时查看日志:/var/log/nginx/error.log
  • 静态 vs 动态网站:如果是 PHP、Node.js 等,还需配置相应运行环境。

✅ 总结

通过 Nginx 的虚拟主机机制,可以在一台轻量服务器上轻松托管多个域名网站。核心是:

  1. 每个网站有独立目录;
  2. 每个域名配置独立的 server 块;
  3. 正确的 DNS 解析;
  4. 合理的权限和防火墙设置。

如有需要,也可以结合 Docker 来更灵活地管理多个服务。

需要我提供自动化脚本或支持 PHP/Node.js 应用的部署方案吗?

云服务器