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

怎么配置基于ip地址的虚拟主机

基于IP地址的虚拟主机需为每个站点分配独立IP,修改主配置文件启用相关模块,并设置对应的ServerName与DocumentRoot等参数

配置基于IP地址的虚拟主机详解

前提条件

独立IP资源:每个虚拟主机必须绑定唯一的公网/内网IP(共享IP无法实现此模式)。
操作系统支持:以Linux为例(如CentOS/Ubuntu),Windows Server同理但命令不同。
网络权限:确保防火墙允许新IP的流量通过相关端口(如HTTP默认80/HTTPS 443)。


操作步骤(以Apache为例)

阶段 具体配置内容 示例代码/路径
1️⃣ 分配IP 在系统网络接口中为每个站点添加独立IP(通过ifconfig或云控制台分配) eth0:0(别名)、ens33:1
2️⃣ 修改主配置文件 编辑httpd.conf,启用mod_ssl模块并取消注释以下参数:
Listen <新IP>:80 Listen 192.168.1.100:80
VirtualHost <新IP>块中定义文档根目录和日志路径
3️⃣ 创建站点目录结构 为每个IP对应的域名建立独立的文件夹结构 /var/www/html_siteA → IP A指向此处
4️⃣ 设置权限 确保Web服务器用户(如apache)对该目录有读权限 chown -R apache:apache /var/www/html_siteA
5️⃣ 重启服务 应用配置变更后重新加载Apache进程 systemctl restart httpd

关键区别:与基于名称的虚拟主机不同,此处无需依赖ServerName,而是直接通过<VirtualHost IP地址>声明。


Nginx方案对比

若使用Nginx,则需在nginx.conf中添加类似片段:

server {
    listen      192.168.1.101:80; # 第二个站点的IP
    server_name example2.com;     # 可选辅助解析
    root        /data/siteB;
    index       index.html;
}

注意:Nginx默认不支持纯IP访问(无域名时),建议同时配置server_name以提高兼容性。


DNS解析配合

即使采用IP直连方式,仍推荐做A记录解析:
| 目标IP | 对应域名 | TTL建议值 |
|————–|——————|———–|
| 192.168.1.100| sitea.yourdomain | 3600 |
| 192.168.1.101| siteb.yourdomain | 3600 |

这样可通过http://192.168.1.100http://sitea.yourdomain两种方式访问同一站点。


验证方法

  1. 命令行测试curl -I http://<IP地址>查看响应头是否包含预期的Server信息。
  2. 浏览器访问:直接输入IP地址,确认显示对应站点的内容而非默认页面。
  3. 日志排查:检查错误日志(如/var/log/httpd/error_log)是否存在403/404报错。

相关问题与解答

Q1:为什么配置了新IP但无法访问?
可能原因:①防火墙未放行该IP的端口;②SELinux策略阻止;③网络路由未正确添加,解决方法依次执行:

怎么配置基于ip地址的虚拟主机  第1张

  • firewall-cmd --add-port=80/tcp --permanent && firewall-cmd reload
  • 临时关闭SELinux验证:setenforce 0
  • 使用traceroute <IP>检测连通性。

Q2:能否在同一台服务器上混合使用IP和域名两种虚拟主机?
可以!一个站点用IP(http://10.0.0.5),另一个用域名(https://blog.example.com),只需保证它们的监听地址和端口不冲突

0