当前位置:首页 > 虚拟主机 > 正文

配置基于域名的web虚拟主机

基于域名的Web虚拟主机,需在服务器上绑定域名与目录,设置权限及文档根,确保DNS解析正确,实现多

概念解析

基于域名的Web虚拟主机是指在同一台服务器上通过识别HTTP请求中的Host头部字段,将不同域名映射到对应的文档根目录(如/var/www/html/domain1.com),实现多站点共存的技术方案,其核心依赖DNS解析与Apache/Nginx等Web服务器的配置协同工作。


配置步骤(以Apache为例)

DNS准备

操作类型 示例值
A记录添加 将域名指向服务器公网IP example.com → 192.168.1.100
CNAME别名(可选) 若需二级子域可创建关联主域的别名 blog.example.com → example.com

注意:确保所有涉及的域名已完成备案(国内场景)且TTL设置合理(建议≤600秒)。

服务器环境初始化

# 安装必要组件(Debian/Ubuntu系统)
sudo apt update && sudo apt install -y apache2 libapache2-mod-ssl openssl
sudo systemctl enable --now apache2

️ 关键检查项:确认mod_rewrite模块已加载(a2enmod rewrite)。

创建站点目录结构

/var/www/
├── example.com      # 主站目录
│   ├── index.html    # 默认首页文件
│   └── images/      # 静态资源子目录
└── test.example.com # 测试用子域目录
    └── error.log    # 独立错误日志示例

权限设置:递归授予www-data用户组读写权限:sudo chown -R www-data:www-data /var/www/

配置文件编写(/etc/apache2/sites-available/

模板示例 example.com.conf

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

SSL加固版补充配置(推荐启用HTTPS):

<IfModule mod_ssl.c>
    <VirtualHost :443>
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        ... # 其他参数同上
    </VirtualHost>
</IfModule>

自动证书获取工具:使用Certbot完成Let’s Encrypt部署。

生效配置链路

执行命令序列:

sudo a2ensite example.com.conf      # 启用站点配置
sudo a2ensite test.example.com.conf # 同时启用其他虚拟主机
sudo systemctl restart apache2     # 平滑重启服务使变更生效

验证命令:curl -I http://example.com应返回正确的ServerName响应头。


高级优化策略

优化方向 实施方案 预期效果
负载均衡 结合Keepalived实现VIP漂移+后端RS集群 高可用性提升至99.99%
缓存加速 Varnish反向代理前置,设置TTL=3600s 命中率提高40%+
安全防护 ModSecurity规则引擎拦截SQLi/XSS攻击 WAF检测率≥95%
日志分析 GoAccess可视化工具解析access.log 热点路径实时监控

常见问题与解答

Q1: 为什么访问新添加的域名会跳转到默认站点?

诊断流程:
1️⃣ 检查DNS是否全局生效(dig +trace yourdomain.com)
2️⃣ 确认Apache错误日志是否存在404 Not FoundNo such file or directory报错
3️⃣ 核对ServerName是否与DNS记录完全一致(大小写敏感!)
4️⃣ 确保没有重复端口占用(netstat -tulnp | grep :80)

典型修复案例:
某用户反馈sub.domain.com始终重定向至主站,最终发现其配置文件中误写为ServerName Sub.Domain.Com(首字母大写导致不匹配)。

配置基于域名的web虚拟主机  第1张

Q2: 如何实现同一IP下的多端口监听?

技术实现方案:
修改虚拟主机定义为非通配符模式:

<VirtualHost 192.168.1.100:8080>
    ... # 指定具体IP和自定义端口号
</VirtualHost>

️注意事项:客户端访问时必须显式指定端口号(如http://yourdomain.com:8080),且防火墙需放行对应端口,此方案适用于需要隔离特殊服务的应用场景(

0