上一篇
添加虚拟主机怎么弄出来
- 虚拟主机
- 2025-08-17
- 5
登录云平台控制台,选择“虚拟主机管理”→“创建实例”,填写域名/备案号,分配资源后上传网站文件至指定目录
前期准备
核心概念
术语 | 说明 |
---|---|
虚拟主机 | 一台物理服务器托管多个独立网站/应用,通过规则区分请求目标 |
基于域名 | 最常用方式,同一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
端口监听和`