基于ip的虚拟主机要求服务器配置多个有效ip地址,每个站点独占一个ip,通过virtualhost精确匹配ip:端口组合实现隔离,旧版需启用namevirtualhost指令,新版默认支持。
apache 可以为不同 ip 地址分别绑定独立站点,这种方式称为“基于 ip 的虚拟主机(ip-based virtual hosts)”。它要求服务器拥有多个可用的公网或内网 ip 地址,每个站点独占一个 ip,互不干扰,适合需要 ssl 独立 ip、严格隔离或兼容老旧客户端的场景。
前提:服务器必须配置多个有效 IP 地址
确保系统已实际分配并启用了多个 IP。例如在 Linux 中可通过 ip addr add 添加,或在云平台(如阿里云、AWS)中为网卡绑定辅助弹性 IP;Windows 则在“网络连接→属性→IPv4→高级”中添加多个 IP。运行 ip addr 或 ipconfig 验证所有目标 IP 已生效且可路由。
启用 NameVirtualHost(旧版 Apache 2.2 必须)
在 httpd.conf 或 ports.conf 中取消注释或添加以下行(Apache 2.4+ 默认启用,可跳过):
- NameVirtualHost 192.168.1.10:80
- NameVirtualHost 192.168.1.11:80
注意:每个 IP 后需明确指定端口(如 :80),不能写成 NameVirtualHost *:80,否则会与基于名称的配置冲突。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
为每个 IP 单独定义 VirtualHost 块
每个
-
DocumentRoot /var/www/site-a
ServerName site-a.example.com
-
DocumentRoot /var/www/site-b
ServerName site-b.example.com
关键点:VirtualHost 标签内的 IP 必须与系统实际绑定的 IP 完全一致,包括子网掩码位数(如 192.168.1.10/24 中的 /24 不写入配置,仅写 IP)。
验证与生效
完成配置后执行三步检查:
- 运行 apachectl configtest 或 apache2ctl configtest 确认语法无误
- 确保 DNS 或本地 hosts 文件将各域名解析到对应 IP(如 site-a.example.com → 192.168.1.10)
- 重启服务:systemctl restart apache2(Debian/Ubuntu)或 systemctl restart httpd(CentOS/RHEL)










