linux虚拟主机二级域名

linux虚拟主机二级域名

在 Linux 虚拟主机中,通过添加 A 记录或 CNAME 解析至主站 IP,并在服务器配置...

优惠价格:¥ 0.00
当前位置:首页 > 虚拟主机 > linux虚拟主机二级域名
详情介绍
在 Linux 虚拟主机中,通过添加 A 记录或 CNAME 解析至主站 IP,并在服务器配置

核心概念界定

术语 定义
主域名 已注册并指向当前虚拟主机的基础域名(如 example.com
二级域名 基于主域名派生的前缀化名称(如 blog.example.comshop.example.com
A记录 DNS将域名映射至IP地址的核心记录类型
文档根目录 存放网站文件的物理路径(需与二级域名一一对应)

实施前置条件

必要准备项

序号 项目 要求
1 域名所有权 确保可管理主域名的DNS解析设置
2 服务器环境 Linux系统 + LAMP/LNMP环境(推荐CentOS/Ubuntu)
3 Web服务软件 Apache/Nginx(本文以Apache为例)
4 根目录权限 确保可通过FTP/SSH上传文件至指定目录

完整配置流程

Step 1: 添加DNS解析记录

登录域名控制面板 → 新增A记录:

主机记录:blog(或其他自定义前缀)
记录值:服务器公网IP
TTL:默认或设为600秒加速更新

注:新增后需等待全球DNS同步(约5-30分钟)

Step 2: 创建网站目录结构

# 示例:为 blog.example.com 创建独立目录
sudo mkdir -p /var/www/html/blog.example.com
sudo chown -R www-data:www-data /var/www/html/blog.example.com  # 根据Web服务器用户调整
sudo chmod -R 755 /var/www/html/blog.example.com

Step 3: 配置Apache虚拟主机

编辑主配置文件 /etc/apache2/sites-available/

<VirtualHost :80>
    ServerAdmin admin@example.com
    ServerName blog.example.com
    DocumentRoot /var/www/html/blog.example.com
    ErrorLog ${APACHE_LOG_DIR}/blog_error.log
    CustomLog ${APACHE_LOG_DIR}/blog_access.log combined
    <Directory "/var/www/html/blog.example.com">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

执行生效命令:

sudo a2ensite blog.example.com.conf  # 替换为你的文件名
sudo systemctl restart apache2

Step 4: 上传网站内容

通过FTP/SCP将网页文件上传至 /var/www/html/blog.example.com 目录,建议包含 index.html 作为入口文件。

Step 5: 高级优化(可选)

功能 实现方式
HTTPS支持 申请免费SSL证书(Let’s Encrypt),配置HSTS头
伪静态规则 .htaccess 中编写URL重写规则
流量统计 集成AWStats/Piwik等工具
CDN加速 配置Cloudflare等CDN服务商,将二级域名接入边缘节点

多场景适配方案

场景 解决方案
同一服务器托管多个二级域名 每个域名创建独立虚拟主机块,分配不同文档根目录
跨服务器部署 主域名解析到负载均衡器,按规则分发至后端不同服务器
临时测试环境 使用本地hosts文件模拟解析(仅限开发阶段)

常见问题与解答

Q1: 为什么添加A记录后访问仍然显示“无法连接”?

A: 可能原因及排查步骤:

  1. DNS未生效:使用 dig blog.example.com 检查是否返回正确IP
  2. 防火墙拦截:执行 sudo ufw status 确认80/443端口开放
  3. SELinux限制:查看日志是否有 “denied” 报错,临时禁用 sudo setenforce 0 测试
  4. 文件权限不足:确保文档根目录属主为Web服务器运行用户(如www-data)

Q2: 如何让多个二级域名共享同一套代码但显示不同主题?

A: 推荐两种方案:

  1. 动态识别域名:在入口文件中通过 $_SERVER['HTTP_HOST'] 判断当前域名,加载对应配置文件
    // config.php
    $domain = explode('.', $_SERVER['HTTP_HOST']);
    switch($domain[0]) {
        case 'blog': include 'theme_blog.php'; break;
        case 'shop': include 'theme_shop.php'; break;
        default: include 'default.php';
    }
  2. 符号链接方案:所有二级域名指向同一代码库,通过CSS/JS变量控制样式差异
    ln -s /var/www/html/core /var/www/html/blog.example.com
    ln -s /var/www/html/core /var/www/html/shop.example.com
0