在网站运营与开发过程中,二级域名的使用极为常见,它能够帮助管理者实现业务模块分离、区域化服务部署或品牌差异化展示,通过 blog.example.com 搭建博客、shop.example.com 构建电商平台,既能保持主域名的统一性,又能提升各模块的独立性,在 Apache 服务器中配置二级域名,需经历 DNS 解析设置、Apache 虚拟主机配置及服务重启等关键步骤,以下将详细拆解整个流程,确保操作清晰、无遗漏。

二级域名配置的核心逻辑
二级域名的本质是对主域名的层级扩展,其访问流程依赖两大核心环节:
- DNS 解析:将二级域名(如
test.example.com)指向服务器的 IP 地址,确保用户访问时能定位到目标服务器。 - Apache 虚拟主机:服务器根据请求的域名,将流量分发到对应的网站目录,实现不同二级域名加载不同内容。
需提前明确:操作前需具备服务器 root 权限(或 sudo 权限),且主域名(如 example.com)已正确解析至服务器 IP。
第一步:DNS 解析配置
DNS 解析是二级域名生效的前提,需在域名管理平台(如阿里云、腾讯云、Cloudflare 等)添加解析记录,以添加 test.example.com 为例,具体操作如下:
登录域名管理控制台
进入购买域名的服务商官网,找到“域名解析”或“DNS 管理”入口,选择目标域名(如 example.com)进入解析设置页面。
添加解析记录
点击“添加记录”,填写以下关键信息(不同平台界面略有差异,但核心字段一致):
| 记录类型 | 主机记录 | 记录值 | TTL | 备注 |
|---|---|---|---|---|
| A | test | 服务器IP | 600 | 将 test.example.com 指向服务器IP;若需使用其他二级域名(如 api.example.com),按相同规则添加新记录 |
| CNAME | www | 主域名 | 600 | 若需 www.test.example.com 形式,可添加 CNAME 记录指向 test.example.com(非必需,按需配置) |
字段说明:
- 记录类型:选择
A记录将域名直接指向 IPv4 地址;若服务器使用 CDN 或需指向另一域名,可选CNAME(但二级域名通常直接用A记录)。 - 主机记录:填写二级域名前缀(如
test),系统会自动拼接主域名(生成test.example.com)。 - 记录值:填写服务器的公网 IP 地址(可通过
curl ifconfig.me命令获取)。 - TTL:缓存时间,默认 600 秒(10分钟),解析生效后用户访问时会按此时间缓存 DNS 结果,值越小生效越快,但 DNS 服务器负载略高。
等待解析生效
解析记录添加后,需等待 DNS 传播(10 分钟至 24 小时,取决于服务商),可通过以下命令验证是否生效:
# 在本地终端执行(Windows 使用 cmd 或 PowerShell) ping test.example.com # 或使用 dig 命令(需安装 bind-utils,Linux/Mac 可直接用) dig test.example.com
若返回结果中包含服务器 IP,则解析生效。
第二步:Apache 虚拟主机配置
DNS 解析生效后,需在 Apache 服务器中配置虚拟主机,定义 test.example.com 对应的网站目录、日志文件等参数,Apache 虚拟主机分为基于域名(NameVirtualHost)和基于 IP(IP-based)两种,二级域名配置通常采用“基于域名”的方式(多个域名共享同一 IP)。
创建网站目录与测试文件
为二级域名创建独立的网站目录,便于管理文件权限与内容,假设主网站目录为 /var/www/html,二级域名目录可按以下规则创建:
# 创建二级域名网站目录 sudo mkdir -p /var/www/test.example.com # 设置目录权限(用户为 apache 或 www-data,取决于系统) sudo chown -R apache:apache /var/www/test.example.com # CentOS/RHEL sudo chown -R www-data:www-data /var/www/test.example.com # Ubuntu/Debian sudo chmod -R 755 /var/www/test.example.com # 创建测试首页(用于验证配置) echo "<h1>Welcome to test.example.com!</h1>" | sudo tee /var/www/test.example.com/index.html
配置虚拟主机文件
Apache 的虚拟主机配置文件通常存放在 /etc/httpd/conf.d/(CentOS/RHEL)或 /etc/apache2/sites-available/(Ubuntu/Debian)目录下,不同系统的操作略有差异,分述如下:

(1)CentOS/RHEL 系统
在 /etc/httpd/conf.d/ 目录下创建新的配置文件(如 test.example.com.conf):
sudo vi /etc/httpd/conf.d/test.example.com.conf
``` 按需修改 `ServerAdmin`、`DocumentRoot` 等参数):
```apache
<VirtualHost *:80>
# 管理员邮箱(错误页会显示)
ServerAdmin admin@example.com
# 二级域名(需与 DNS 解析的主机记录一致)
ServerName test.example.com
# 可选:添加别名(如 www.test.example.com)
ServerAlias www.test.example.com
# 网站根目录(之前创建的目录路径)
DocumentRoot /var/www/test.example.com
# 错误日志路径
ErrorLog /var/log/httpd/test.example.com-error.log
# 访问日志路径
CustomLog /var/log/httpd/test.example.com-access.log common
# 目录权限配置(允许目录访问、启用索引等)
<Directory /var/www/test.example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>(2)Ubuntu/Debian 系统
Ubuntu 默认使用 a2ensite 和 a2dissite 管理虚拟主机,需先在 /etc/apache2/sites-available/ 创建配置文件,再启用它:
# 创建配置文件
sudo vi /etc/apache2/sites-available/test.example.com.conf
``` 与 CentOS 版本基本一致(仅需调整日志路径,Ubuntu 的 Apache 日志通常在 `/var/log/apache2/`):
```apache
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName test.example.com
ServerAlias www.test.example.com
DocumentRoot /var/www/test.example.com
# Ubuntu 的日志路径
ErrorLog /var/log/apache2/test.example.com-error.log
CustomLog /var/log/apache2/test.example.com-access.log common
<Directory /var/www/test.example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>创建完成后,启用配置文件并禁用默认站点(可选):
# 启用新配置 sudo a2ensite test.example.com.conf # 禁用默认站点(避免冲突,可选) sudo a2dissite 000-default.conf
检查 Apache 配置语法
在重启服务前,务必检查配置文件语法是否正确,避免因错误导致 Apache 启动失败:
# CentOS/RHEL sudo httpd -t # Ubuntu/Debian sudo apache2ctl configtest
若返回 Syntax OK,则配置无误;若有报错,需根据提示返回修改配置文件(常见错误包括路径不存在、指令拼写错误等)。
重启 Apache 服务
语法检查通过后,重启 Apache 使配置生效:
# CentOS/RHEL sudo systemctl restart httpd # Ubuntu/Debian sudo systemctl restart apache2
第三步:验证与调试
本地 hosts 测试(可选)
若 DNS 解析未及时生效,可通过修改本地 hosts 文件临时绑定域名与 IP,快速验证配置:
- Windows:打开
C:WindowsSystem32driversetchosts(以管理员身份运行记事本编辑),添加服务器IP test.example.com。 - Linux/Mac:编辑
/etc/hosts文件,添加服务器IP test.example.com。
保存后,在浏览器访问 http://test.example.com,若显示之前创建的测试页面(“Welcome to test.example.com!”),则配置成功。
常见问题排查
若访问失败,可按以下步骤排查:
DNS 问题:通过
dig test.example.com确认是否解析到服务器 IP;若未解析,检查域名管理平台的记录是否正确,或等待 DNS 传播。防火墙问题:检查服务器防火墙是否放行 80 端口(HTTP)和 443 端口(HTTPS):

# CentOS/RHEL(firewalld) sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload # Ubuntu/Debian(ufw) sudo ufw allow 'Apache Full'
目录权限问题:确认网站目录的所有者与 Apache 运行用户一致(CentOS 为
apache,Ubuntu 为www-data),且目录权限为755,文件权限为644。Apache 错误日志:查看虚拟主机配置的 ErrorLog(如
/var/log/httpd/test.example.com-error.log),根据错误信息定位问题(常见错误包括 “Permission denied”“File does not exist” 等)。
进阶配置:HTTPS 支持(可选)
若需为二级域名启用 HTTPS(加密访问),可通过 Let’s Encrypt 免费证书实现,具体步骤如下:
安装 Certbot
Certbot 是 Let’s Encrypt 官方推荐的证书管理工具,安装命令:
# CentOS/RHEL sudo yum install certbot python3-certbot-apache # Ubuntu/Debian sudo apt install certbot python3-certbot-apache
申请并部署证书
运行 Certbot,它会自动检测虚拟主机配置并申请证书:
sudo certbot --apache -d test.example.com -d www.test.example.com
按提示输入邮箱(用于证书到期提醒)并同意服务条款,Certbot 会自动修改 Apache 配置文件,添加 HTTPS 虚拟主机配置,并重定向 HTTP 到 HTTPS。
验证 HTTPS
访问 https://test.example.com,浏览器地址栏显示锁形图标即表示 HTTPS 生效,Let’s Encrypt 证书有效期为 90 天,Certbot 会自动配置定时任务续期(可通过 sudo systemctl status certbot.timer 查看)。
在 Apache 中添加二级域名的核心流程可概括为:DNS 解析指向服务器 IP → 创建网站目录 → 配置虚拟主机文件 → 重启服务并验证,操作时需注意:DNS 解析需等待传播时间,虚拟主机配置的路径、域名需与实际一致,防火墙和目录权限是常见问题点,对于生产环境,建议进一步配置 HTTPS、日志轮转(如 logrotate)及访问权限控制,以提升安全性与可维护性,通过以上步骤,即可灵活实现多二级域名的部署与管理,满足不同业务场景的需求。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/24671.html
