在阿里云轻量应用服务器上部署多个不同域名的网站,可以通过 Nginx 虚拟主机(Virtual Host) 的方式实现。以下是详细步骤:
✅ 前提条件
- 你已购买并配置好阿里云轻量应用服务器(如 Ubuntu/CentOS 系统)。
- 每个网站有独立的域名,并已完成域名解析(A 记录指向服务器公网 IP)。
- 服务器开放了 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.comsite2.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-available 和 sites-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.comhttp://site2.com
如果看到对应页面,说明部署成功!
📝 补充建议
- 防火墙:确保轻量服务器控制台安全组放行 80/443 端口。
- 备份配置:修改前备份 Nginx 配置。
- 日志排查:出错时查看日志:
/var/log/nginx/error.log - 静态 vs 动态网站:如果是 PHP、Node.js 等,还需配置相应运行环境。
✅ 总结
通过 Nginx 的虚拟主机机制,可以在一台轻量服务器上轻松托管多个域名网站。核心是:
- 每个网站有独立目录;
- 每个域名配置独立的 server 块;
- 正确的 DNS 解析;
- 合理的权限和防火墙设置。
如有需要,也可以结合 Docker 来更灵活地管理多个服务。
需要我提供自动化脚本或支持 PHP/Node.js 应用的部署方案吗?
云小栈