千家信息网

基于httpd实现虚拟主机

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,众所周知,一台物理服务器只能运行一个站点,但如若想实现一台服务器运行多个站点时,就不得不用到虚拟主机了。虚拟主机,顾名思义,就是一个虚拟出来的主机,当在服务单配置完成后,客户端访问时就像是访问了多个后
千家信息网最后更新 2025年12月02日基于httpd实现虚拟主机

众所周知,一台物理服务器只能运行一个站点,但如若想实现一台服务器运行多个站点时,就不得不用到虚拟主机了。虚拟主机,顾名思义,就是一个虚拟出来的主机,当在服务单配置完成后,客户端访问时就像是访问了多个后端服务器。


实现虚拟主机有三种不同的方式:

  1. 基于IP的虚拟主机:使用不同的IP地址提供不同的站点

  2. 基于PORT的虚拟主机:使用不同的端口提供不同的站点

  3. 基于HOSTNAME的虚拟主机:使用不同的主机名提供不同站点


为了更直观的感受,下面一一实现基于三种方式的虚拟主机:

说明一下实验环境,实验主机为centos7.3,IP地址为:192.168.1.104

首先安装httpd服务,这里使用的是httpd2.4.6版本:

# yum -y install httpd

安装完成后查看安装文件:

# rpm -ql httpd

对应的文件做一些简单说明:

    服务脚本:/etc/rc.d/init.d/httpd    脚本配置文件:/etc/sysconfig/httpd    运行目录:/etc/httpd    配置文件:    主配置文件:/etc/httpd/conf/httpd.conf    扩展配置:/etc/httpd/conf.d/*.conf    监听的Socket:80/tcp,443/tcp    文档根目录:/var/www/html    CGI:/var/www/cgi-bin/    默认主页:index.html


在实验之前,须确保在httpd.conf配置文件中:

httpd服务监听的端口为80

注释掉DocumentRoot "/var/www/html/"


一、基于IP的虚拟主机实现:

本机的IP地址为192.168.1.104,需在添加一个IP地址:


# ifconfig ens36:0 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255  up


用ifconfig查看:

可看到ens36:0已添加成功。


为了便于管理,我们在扩展配置文件中新建VirtualHost.conf文件:

]# vim VirtualHost.conf

添加内容如下:

    DocumentRoot "/var/www/test1/"    ServerName 192.168.1.104    DocumentRoot "/var/www/test2/"    ServerName 192.168.1.200

而后为添加的两个站点添加主页

首先创建两个目录:

# mkdir -pv /var/www/test{1,2}mkdir: created directory '/var/www/test1'mkdir: created directory '/var/www/test2'

为test1提供主页文件:

# vim /var/www/test1/index.html

添加内容如下:

Test1 Page

保存退出。站点test2同理;


执行语法检查:

# httpd -tSyntax OK

重读配置文件:

# systemctl reload httpd

测试结果:

站点test1:

站点test2:

二、基于端口的虚拟主机实现:

编辑扩展配置文件:

]# vim VirtualHost.conf

添加内容如下:

    DocumentRoot "/var/www/test1/"    ServerName 192.168.1.104    DocumentRoot "/var/www/test2/"    ServerName 192.168.1.200

在主配置文件中,监听端口下面添加一行

Listen 8080

保存退出

执行语法检查:

# httpd -tSyntax OK

注:此处由于添加了端口,需要重启服务方能生效

# systemctl restart httpd# ss -tnlState      Recv-Q Send-Q Local Address:Port               Peer Address:Port              LISTEN     0      128             *:22                          *:*                  LISTEN     0      100     127.0.0.1:25                          *:*                  LISTEN     0      128            :::8080                       :::*                  //8080端口已监听LISTEN     0      128            :::80                         :::*                   //80端口已监听LISTEN     0      128            :::22                         :::*                  LISTEN     0      100           ::1:25                         :::*

测试结果:

站点1:

站点2:

三、由于基于IP和端口的虚拟主机不常用,故而此处演示基于FQDN的虚拟主机实现:

在扩展配置文件中添加如下内容:

为了使主机名解析成功,需要修改host文件,我们此处使用win下浏览器测试,故而需要修改win下hosts文件,路径为:

C:\Windows\System32\drivers\etc\hosts

添加如下内容

开始测试:

站点test1:

站点test2:

以上,即使基于httpd的虚拟主机三种实现方式,但在日常生产中,常需要对特定用户实现访问控制,下面简单演示基于用户的控制访问:

编辑扩展配置文件,并添加如下内容:

接下来用htpasswd生成密码:

创建对应的admin目录及主页文件

# mkdir /var/www/test1/admin    //创建目录# vim /var/www/test1/admin/index.html  //创建主业文件

Authentication

//添加的内容

如图:

而后访问:

输入用户名密码:

至此httpd的虚拟主机和用户认证就实现了。

文件 主机 站点 虚拟主机 配置 端口 服务 不同 内容 监听 主页 地址 用户 目录 测试 方式 服务器 实验 运行 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 智软软件开发有限公司 腾讯服务器流量超了扣款吗 中国网络安全核心技术发展方向 数据库登录密码修改日志 数据库并发写入 武汉云时千正网络技术有限公司 铜川市第六届网络安全宣传周 三大运营商软件开发工资 php数据库搭建实例 苹果ui软件开发 江苏林明峰做软件开发 怎么向网络技术发展趋势 数据库的er图怎么画 2022年热门软件开发 会议营销的数据库在哪 南京助力智慧工地软件开发 数据库查询重复名字及重复次数 合肥滨湖软件开发培训贵不贵 服务器c盘变成了x盘启动不了 山东网络时间同步服务器云主机 吸烟文献数据库有哪些 中国科技论文数据库 网络安全设备造成业务中断 软件开发详细说明书模板 数据库视图设置 国家网络安全办公室主任是谁 数据库中的实例包括哪些 企业管理软件开发服务价钱 网吧怎么制作电影服务器 dcom服务器进程
0