基于IP的虚拟主机需先为网卡配置多个IP,再在httpd.conf中为每个IP:端口对设置独立<VirtualHost>块,路由仅依据目标IP,ServerName不参与判断,无需NameVirtualHost指令。
配置基于 ip 的虚拟主机,核心是让 apache 为每个站点分配一个独占的 ip 地址(加端口),请求进来时直接按目标 ip 路由,不依赖域名或 host 头。它天然隔离、无需 dns、适合测试或多租户内网环境。
一、先给系统绑定多个 IP 地址
Apache 不能自己“生成”IP,必须由操作系统提供。常见做法:
- CentOS/RHEL/Rocky:编辑 /etc/sysconfig/network-scripts/ifcfg-eth0:1,填入 IPADDR=192.168.1.101、NETMASK=255.255.255.0,再运行 systemctl restart network
- Ubuntu/Debian:临时添加用 sudo ip addr add 192.168.1.102/24 dev eth0;永久配置写入 /etc/netplan/ YAML 文件后执行 sudo netplan apply
- 验证是否生效:运行 ip addr show 或 ifconfig,确认新 IP 已出现在网卡列表中
二、在 httpd.conf 中声明监听与虚拟主机
Listen 指令和 VirtualHost 必须严格配对——Apache 只会把发往某个 IP:port 的请求交给对应块处理。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在主配置中添加明确的监听行,例如:
Listen 192.168.1.101:80
Listen 192.168.1.102:80 - 每个
块必须写成完整地址形式:
<VirtualHost 192.168.1.101:80>
不能写 <VirtualHost *:80> 或只写 IP 不带端口 - ServerName 是可选字段,仅用于日志记录或重定向参考,不参与路由判断
- Apache 2.4+ 已废弃 NameVirtualHost 指令,无需也不应启用它
三、设置网站目录与访问权限
避免共用 /var/www/html,推荐按 IP 隔离根目录,提升安全性和可维护性。
- 创建独立目录,如:/srv/www/192.168.1.101/ 和 /srv/www/192.168.1.102/
- 设属主为 root:www-data(Debian/Ubuntu)或 root:apache(RHEL/Rocky),目录权限设为 750
- 在
块中启用最小必要权限:
Require all granted
Options -Indexes -FollowSymLinks
AllowOverride None
四、验证并启用配置
改完配置别急着重启,先做两步检查:
- 语法校验:
Debian/Ubuntu 执行 sudo apache2ctl -t
RHEL/CentOS 执行 sudo httpd -t
输出 Syntax OK 才继续 - 确认监听状态:
sudo ss -tuln | grep ':80' 应显示两行,分别含你的两个 IP:80 - 重启服务:
sudo systemctl restart apache2 或 sudo systemctl restart httpd - 浏览器或 curl 直接访问 http://192.168.1.101 和 http://192.168.1.102,验证返回内容是否正确

















