上一篇
登录云平台控制台,选择“虚拟主机管理”→“创建实例”,填写域名/备案号,分配资源后上传网站文件至指定目录
前期准备
核心概念
| 术语 | 说明 |
|---|---|
| 虚拟主机 | 一台物理服务器托管多个独立网站/应用,通过规则区分请求目标 |
| 基于域名 | 最常用方式,同一IP+不同域名指向不同站点 |
| 基于端口 | 同一IP+不同端口号(如80、8080)区分不同站点 |
| 基于IP地址 | 为每个站点分配独立公网IP(成本高,较少用) |
必备条件
已注册并完成DNS解析的域名
服务器操作系统(推荐CentOS/Ubuntu/Debian)
Web服务器软件(Apache/Nginx/IIS/LiteSpeed等)
ROOT或sudo权限账户
主流方案实操指南
▶️ 方案A:Apache实现多域名虚拟主机(以Ubuntu为例)
步骤1:安装依赖
sudo apt update && apt install apache2 -y
步骤2:创建站点目录结构
# 创建第一个站点目录及测试页 sudo mkdir -p /var/www/site1.example.com/html echo "<h1>Site 1 Content</h1>" | sudo tee /var/www/site1.example.com/html/index.html # 创建第二个站点目录及测试页 sudo mkdir -p /var/www/site2.example.com/html echo "<h1>Site 2 Content</h1>" | sudo tee /var/www/site2.example.com/html/index.html
步骤3:配置虚拟主机(编辑默认-ssl.conf)
sudo nano /etc/apache2/sites-available/000-default.conf
️ 关键配置段:
<VirtualHost :80>
ServerAdmin admin@site1.example.com
ServerName site1.example.com
DocumentRoot /var/www/site1.example.com/html
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
<VirtualHost :80>
ServerAdmin admin@site2.example.com
ServerName site2.example.com
DocumentRoot /var/www/site2.example.com/html
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
步骤4:启用配置并重启服务
sudo a2ensite 000-default.conf # 启用新配置 sudo systemctl restart apache2 # 重启Apache
▶️ 方案B:Nginx实现多域名虚拟主机(以CentOS为例)
步骤1:安装依赖
sudo yum install epel-release -y sudo yum install nginx -y
步骤2:创建站点目录结构
# 创建第一个站点目录及测试页 sudo mkdir -p /usr/share/nginx/html/siteA/ echo "<h1>Website A</h1>" | sudo tee /usr/share/nginx/html/siteA/index.html # 创建第二个站点目录及测试页 sudo mkdir -p /usr/share/nginx/html/siteB/ echo "<h1>Website B</h1>" | sudo tee /usr/share/nginx/html/siteB/index.html
步骤3:配置虚拟主机(编辑nginx.conf)
sudo vi /etc/nginx/conf.d/virtualhost.conf
️ 关键配置段:
server {
listen 80;
server_name siteA.example.com;
root /usr/share/nginx/html/siteA;
access_log /var/log/nginx/siteA_access.log;
error_log /var/log/nginx/siteA_error.log;
}
server {
listen 80;
server_name siteB.example.com;
root /usr/share/nginx/html/siteB;
access_log /var/log/nginx/siteB_access.log;
error_log /var/log/nginx/siteB_error.log;
}
步骤4:重启服务生效
sudo systemctl restart nginx
验证与排障
| 检查项 | 命令/操作 | 预期结果 |
|---|---|---|
| 域名解析 | dig A yourdomain.com |
显示正确的服务器IP |
| 服务状态 | systemctl status apache2/nginx |
显示active (running) |
| 防火墙开放 | sudo ufw allow 80/tcp |
HTTP端口已放行 |
| 访问测试 | 浏览器输入各域名 | 显示对应站点的内容 |
| 查看错误日志 | tail -f /var/log/apache2/.log |
快速定位配置错误原因 |
相关问题与解答
Q1: 为什么修改完配置后刷新页面还是旧内容?
解答:
① 未执行systemctl restart命令使配置生效;
② 浏览器缓存导致,尝试Ctrl+F5强制刷新;
③ 检查DocumentRoot路径是否拼写错误;
④ 确认DNS已全球生效(可用ping命令测试)。
Q2: 如何给某个虚拟主机单独启用HTTPS?
解答:
以Apache为例:
- 申请SSL证书(推荐Let’s Encrypt):
sudo snap install core; sudo snap refresh; sudo snap install --classic certbot - 执行
sudo certbot --apache -d siteA.example.com - Nginx用户则使用
--nginx参数,自动修改配置文件添加443端口监听和`
