Linux系统下虚拟主机解析完整教程从配置到实战详解
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
本文详细讲解了在Linux系统下配置虚拟主机解析的完整流程,涵盖Apache/Nginx服务配置、虚拟主机文件编写、域名绑定及DNS解析设置等内容,通过实际案例,帮助用户掌握基于IP和基于域名的虚拟主机搭建方法,实现多站点共存,适用于Web服务器部署与开发测试环境搭建。
在现代Web服务器运维中,Linux操作系统凭借其卓越的稳定性、强大的安全性以及丰富的开源生态,已成为部署网站和运行Web应用的首选平台,借助Apache或Nginx等主流Web服务器软件实现虚拟主机(Virtual Host)配置,能够使一台物理服务器同时托管多个独立域名站点——这是构建高效、低成本多站架构的核心技术之一,本文将系统讲解如何在Linux环境下完成虚拟主机的配置与域名解析,帮助初学者快速掌握这一关键技能,并为后续深入学习打下坚实基础。
虚拟主机(Virtual Hosting)是一种通过软件层面划分资源的技术,允许单台服务器对外提供多个网站服务,每个站点可拥有独立的域名、文件目录、访问日志,甚至独立的SSL证书,对于中小企业、开发者或个人站长而言,使用虚拟主机不仅能显著降低硬件投入与运维成本,还能最大化利用服务器资源,提升部署灵活性,在Linux系统中,Apache和Nginx作为最广泛使用的Web服务器,均原生支持虚拟主机功能,且配置方式灵活、稳定可靠。
环境准备
在开始配置前,请确保您的系统已满足以下基本条件:
- 操作系统:推荐使用长期支持版本,如 Ubuntu 20.04 LTS、Ubuntu 22.04 LTS 或 CentOS 7/8,以保证系统的稳定性与更新维护。
- Web服务器:安装 Apache(即 httpd)或 Nginx,本文以 Apache 为例展开说明。
- 域名解析服务:需将目标域名通过DNS服务商设置A记录,指向服务器的公网IP地址。
- 权限要求:具备 root 权限或可通过 sudo 执行管理命令,以便修改配置文件和服务状态。
本教程基于 Ubuntu 22.04 系统与 Apache 2.4 版本进行实操演示,其他发行版原理相通,仅路径或命令略有差异。
安装Apache并启用虚拟主机模块
更新系统软件包索引,并安装Apache服务:
sudo apt update sudo apt install apache2 -y
安装完成后,启动Apache服务并设置开机自启,确保其长期稳定运行:
sudo systemctl start apache2 sudo systemctl enable apache2
Apache默认已加载虚拟主机所需的核心模块(如 mod_vhost_alias),其站点配置文件通常存放在 /etc/apache2/sites-available/ 目录下,通过符号链接机制由 a2ensite 工具动态启用或禁用。
创建虚拟主机配置文件
假设我们需要为两个域名 example.com 和 blog.example.com 分别搭建独立网站,以下是详细操作流程。
创建网站根目录结构
为每个站点创建专属的文档根目录,便于管理和隔离内容:
sudo mkdir -p /var/www/example.com/html sudo mkdir -p /var/www/blog.example.com/html
设置文件权限
赋予当前用户对网站目录的读写权限,并设置标准访问权限(755),保障安全与可访问性:
sudo chown -R $USER:$USER /var/www/example.com/html sudo chown -R $USER:$USER /var/www/blog.example.com/html sudo chmod -R 755 /var/www
创建测试页面
生成简单的HTML页面用于后续验证配置是否生效:
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/html/index.html echo "<h1>Welcome to blog.example.com</h1>" | sudo tee /var/www/blog.example.com/html/index.html
编写虚拟主机配置文件
进入Apache的可用站点目录:
cd /etc/apache2/sites-available/
创建主站配置文件 example.com.conf:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
<Directory "/var/www/example.com/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
同理,创建子站配置文件 blog.example.com.conf:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName blog.example.com
DocumentRoot /var/www/blog.example.com/html
ErrorLog ${APACHE_LOG_DIR}/blog.example.com_error.log
CustomLog ${APACHE_LOG_DIR}/blog.example.com_access.log combined
<Directory "/var/www/blog.example.com/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
注意:<Directory> 指令块明确授权Apache访问指定目录,避免因权限不足导致403错误,是生产环境中不可或缺的安全配置。
启用站点并重载服务
使用Apache自带的工具启用新配置的站点:
sudo a2ensite example.com.conf sudo a2ensite blog.example.com.conf
若您不希望默认站点(如“Apache2 Default Page”)被访问,建议将其禁用:
sudo a2dissite 000-default.conf
重新加载Apache配置,使更改立即生效:
sudo systemctl reload apache2
配置DNS解析
登录您的域名注册商或DNS服务提供商后台(如阿里云、腾讯云、Cloudflare、Namecheap等),添加两条A类型记录:
- 主机记录:`example.com` → 记录值:服务器公网IP
- 主机记录:`blog.example.com` → 记录值:同一IP地址
DNS传播需要一定时间,一般几分钟到数小时不等,您可通过以下命令实时检测解析状态:
dig example.com +short ping -c 3 example.com
测试访问与结果验证
打开浏览器,分别访问以下地址:
若页面正确显示对应的欢迎信息,则说明虚拟主机配置成功,Apache已能根据请求的域名准确路由至不同站点目录。
常见问题排查指南
-
无法访问站点:检查防火墙是否放行HTTP(端口80),若使用UFW,执行:
sudo ufw allow 'Apache'
或直接开放端口:sudo ufw allow 80/tcp
-
显示默认页面而非自定义内容:确认是否已禁用默认站点(
000-default.conf),并通过语法检查验证配置有效性:sudo apache2ctl configtest
若


