在阿里云轻量应用服务器上配置多个域名指向不同网站,核心思路是:通过 Web 服务器(如 Nginx/Apache)的虚拟主机(Server Block/Location)功能,根据域名区分请求并转发到不同的项目目录或后端服务。以下是基于 Nginx 的详细步骤(Apache 逻辑类似):
✅ 前提条件
- 已购买阿里云轻量应用服务器,并安装好 Web 环境(推荐宝塔面板简化操作,或直接使用命令行)。
- 各域名已完成 DNS 解析,
A 记录指向服务器公网 IP。 - 服务器防火墙已放行
80/443端口(阿里云安全组 + 系统防火墙)。
🛠️ 方法一:使用 Nginx 手动配置(推荐生产环境)
步骤 1:创建网站目录与基础文件
sudo mkdir -p /var/www/site1/html
sudo mkdir -p /var/www/site2/html
# 创建测试页面
echo "<h1>Site 1: example.com</h1>" | sudo tee /var/www/site1/html/index.html
echo "<h1>Site 2: test.cn</h1>" | sudo tee /var/www/site2/html/index.html
# 设置权限(以 www-data 为例,CentOS 可能是 nginx)
sudo chown -R www-data:www-data /var/www/site1 /var/www/site2
sudo chmod -R 755 /var/www
步骤 2:配置 Nginx 虚拟主机
编辑主配置文件(路径因发行版而异):
- Ubuntu/Debian:
/etc/nginx/sites-available/default - CentOS/RHEL:
/etc/nginx/conf.d/example.conf
✅ 更推荐新建独立配置避免覆盖默认:
sudo nano /etc/nginx/conf.d/site1.conf
写入以下内容(替换实际域名和路径):
server {
listen 80;
server_name example.com www.example.com;
root /var/www/site1/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 可选:强制 HTTPS(需先申请证书)
# return 301 https://$host$request_uri;
}
server {
listen 80;
server_name test.cn www.test.cn;
root /var/www/site2/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
💡 提示:若需支持 PHP/Node.js/Python 等,需在
location ~ .php$等块中配置 FastCGI 反向X_X。
步骤 3:测试并重载 Nginx
sudo nginx -t # 检查语法
sudo systemctl reload nginx
步骤 4:验证访问
浏览器访问 http://example.com 和 http://test.cn,应分别显示对应站点内容。
🔐 进阶:启用 HTTPS(Let’s Encrypt 免费证书)
方案 A:使用 certbot(推荐)
# 安装 certbot + nginx 插件
sudo apt install certbot python3-certbot-nginx # Ubuntu
# 或
sudo yum install certbot python3-certbot-nginx # CentOS
# 自动获取并配置所有域名的证书
sudo certbot --nginx -d example.com -d www.example.com -d test.cn -d www.test.cn
✅ 成功后会自动修改 Nginx 配置,添加 listen 443 ssl 及证书路径,并重定向 HTTP→HTTPS。
方案 B:宝塔面板用户
- 登录宝塔 → 网站 → 点击“设置” → SSL → 选择 Let’s Encrypt → 勾选域名 → 一键申请
- 自动配置重定向,无需手动改 Nginx。
🧩 替代方案:使用宝塔面板(适合新手)
- 在阿里云控制台安装「宝塔面板」(Linux 面板)。
- 登录宝塔 → 「网站」→「添加站点」:
- 输入第一个域名(如
example.com),选择根目录(如/www/wwwroot/example.com) - 再次添加第二个域名(如
test.cn),指定不同根目录
- 输入第一个域名(如
- 每个站点可独立配置:
- PHP 版本
- SSL 证书(一键申请 Let’s Encrypt)
- 伪静态规则
- 数据库绑定
✅ 优势:可视化操作、批量管理、自动备份、监控告警等。
⚠️ 常见问题排查
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 所有域名都返回同一网站内容 | Nginx 未正确配置 server_name 或优先级错误 |
检查 server_name 拼写;确保无 default_server 冲突 |
| 404 Not Found | 根目录错误或 index 文件缺失 |
ls /var/www/siteX/html 确认文件存在;检查 root 路径 |
| 无法访问(Connection refused) | 防火墙/安全组未开放 80/443 | 阿里云控制台 → 实例 → 安全组 → 添加入方向规则 |
| HTTPS 报错证书无效 | 域名未生效或未正确配置 | 检查 DNS 解析是否生效(ping example.com);确认证书域名匹配 |
需要我为你提供:
- 完整的 Nginx 多域名配置模板(含 PHP/Node.js 示例)?
- 宝塔面板图文操作指南?
- 自动化脚本批量部署多个站点?
欢迎告诉我你的具体需求 😊
云小栈