基于ip的虚拟主机通过为服务器绑定多个ip地址实现站点隔离,每个站点独占ip和端口,不依赖host头,兼容ssl独立证书与老旧客户端;需配置多ip、创建对应网站目录、编写匹配ip的virtualhost块,并验证防火墙与服务状态。

Apache 基于 IP 的虚拟主机,是指服务器绑定多个 IP 地址,每个站点独占一个 IP 和端口(通常是 80),通过请求到达的 IP 区分网站。它不依赖 Host 请求头,兼容性高,适合需要 SSL 独立证书、老旧客户端或严格隔离场景。
前提:为服务器配置多个 IP 地址
一台物理网卡可绑定多个 IPv4 地址。操作方式因系统而异:
-
Linux(命令行):执行
ip addr add 192.168.1.100/24 dev eth0添加辅助 IP;验证用ip addr show eth0 -
Linux(永久生效):编辑网卡配置文件(如
/etc/sysconfig/network-scripts/ifcfg-eth0),追加IPADDR1=192.168.1.101、NETMASK1=255.255.255.0,再重启网络服务 -
CentOS/RHEL 7+ 推荐:使用
nmtui图形化工具 → “Edit a connection” → IPv4 设置 → “Add” 新地址 - Windows Server:在“网络连接”→“属性”→“IPv4”→“高级”中手动添加多个 IP
创建独立网站目录与测试页
每个 IP 对应一个网站根目录,确保内容可读且路径清晰:
- 新建目录:
sudo mkdir -p /var/www/site-ip100 /var/www/site-ip101 - 写入简单页面:
echo "<h1>Site on 192.168.1.100</h1>" > /var/www/site-ip100/index.html - 设置权限(Linux):
sudo chown -R $USER:www-data /var/www/site-ip*,再执行sudo chmod -R 755 /var/www/site-ip*
配置 VirtualHost 块(按 IP 区分)
在 Apache 虚拟主机配置文件中(如 /etc/httpd/conf.d/vhosts-ip.conf 或 /etc/apache2/sites-available/ip-site.conf)写入:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<virtualhost>
ServerName site1.example.com
DocumentRoot "/var/www/site-ip100"
<directory>
Require all granted
</directory></virtualhost><virtualhost>
ServerName site2.example.com
DocumentRoot "/var/www/site-ip101"
<directory>
Require all granted
</directory></virtualhost>
注意:VirtualHost 标签必须精确匹配实际绑定的 IP 和端口;ServerName 是可选标识,不影响路由逻辑,仅用于日志和管理。
启用并验证配置
完成配置后需检查语法并重启服务:
- 检查配置是否合法:
sudo apache2ctl -t(Debian/Ubuntu)或sudo httpd -t(CentOS/RHEL)→ 显示 Syntax OK 才继续 - 重启 Apache:
sudo systemctl restart apache2或sudo systemctl restart httpd - 本地测试(若服务器是本机):
curl -I http://192.168.1.100和curl -I http://192.168.1.101,观察返回的200 OK及响应体内容 - 外部访问需确保防火墙放行对应 IP 的 80 端口(如
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="80" protocol="tcp" accept')
不复杂但容易忽略:基于 IP 的虚拟主机不需要修改 hosts 文件,也不依赖域名解析——只要客户端能直接访问该 IP,就能命中对应站点。










