基于ip的虚拟主机通过为网卡绑定多个ip并在web服务器中分别配置监听实现,适用于测试、内网及严格隔离场景;需系统层添加ip(临时或永久),服务层在apache/nginx中按ip配置独立虚拟主机,并开放防火墙端口。

设置基于 IP 的虚拟主机,核心是让 Web 服务器通过不同 IP 地址区分多个网站。它不依赖域名解析,适合测试环境、内网服务或需要严格隔离的场景。整个过程分两大部分:系统层绑定多个 IP,服务层配置对应站点。
为网卡添加额外 IP 地址
服务器需实际监听多个 IP,才能响应不同地址的请求。Linux 下常用两种方式:
-
临时添加(重启失效):用
ip addr add命令,例如ip addr add 192.168.10.101/24 dev eth0ip addr add 192.168.10.102/24 dev eth0 -
永久生效:编辑网络配置文件(如
/etc/sysconfig/network-scripts/ifcfg-eth0),添加IPADDR1=192.168.10.101、PREFIX1=24等别名段,再重启网络服务
Apache 中配置基于 IP 的虚拟主机
每个 <virtualhost></virtualhost> 块绑定一个具体 IP 和端口:
- 确保主配置中已启用监听,例如:
Listen 192.168.10.101:80和Listen 192.168.10.102:80 - 新建配置文件(如
/etc/httpd/conf.d/site1.conf),内容为:<virtualhost><br> ServerName site1.local<br> DocumentRoot /var/www/site1<br></virtualhost>
- 为另一个 IP 写类似配置,注意修改 IP、目录和
ServerName - 保存后执行
systemctl reload httpd生效
Nginx 中配置基于 IP 的虚拟主机
Nginx 以 server 块为单位定义虚拟主机,关键在 listen 指令指定 IP:
- 在
nginx.conf的http块中引入子配置,例如:include /etc/nginx/conf.d/ip-hosts/*.conf; - 创建
/etc/nginx/conf.d/ip-hosts/101.conf:server {<br> listen 192.168.10.101:80;<br> root /usr/share/nginx/site1;<br> index index.html;<br>} - 同理创建
102.conf,将listen和root改为对应值 - 检查语法
nginx -t,再执行systemctl reload nginx
验证与注意事项
配置完成后,直接在浏览器中访问各 IP 地址即可看到对应站点:
- 用
curl http://192.168.10.101和curl http://192.168.10.102测试响应内容是否正确 - 确保防火墙放行对应 IP 的 80 端口(如
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="80" protocol="tcp" accept') - 基于 IP 的方式无需改本地
hosts文件,也不依赖 DNS,但每增加一个站点就要多一个公网 IP,成本较高










