httpd系列之二:基于FQDN实现VirtuaHost

简介:

一、虚拟主机

1、什么是虚拟主机

   是一种让单一服务器可以运行多个网站或服务的技术。虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。

2、使用虚拟主机的目的

   1)方便管理 

   所有的虚拟主机都在同一部主机中,因此彼此可以共用相同的组态设置,借此节省管理的人力与成本

   2)提高性能

   相同主机内的虚拟主机可以共用彼此的程序集(Process Pool),因此可以缩短对客户端的回应时间

   3)降低成本

   虚拟主机使得单一服务器的资源可以被更有效的利用,包括存储器、存储空间或处理器资源。因为通常服务单一网址所需的资源对整部服务器来说相当小,如此可让服务器的资源被更有效的利用。

多个虚拟服务器,可以通过软件架设在同一个实体服务器上,而每个虚拟服务器有可以提供服务器的所有功能,这样相对来说每个虚拟服务器的成本有一定程度的降低。

3、虚拟主机的实现方法
   我们在访问一个网络中的站点时,输入的是域名,而每一个域名对应的是一个IP和端口,所以对于虚拟主机的实现,主要有三种方式

   1)基于不同的IP实现不同的虚拟主机

       实现过程基于IP的变化 

       如果你有多个站点的需要被访问的时候,而且使用了这种基于IP地址的,就是一个站点对应一个IP,那势必有点太浪费IP了,而且现在的IPv4已经消耗待尽,每年的使用费也不少啊,当然,土豪公司就不用这么纠结了。

   2)基于不同的port实现不同的虚拟主机

       实现过程基于端口的变化

       网络报文在传输过程中是基于IP+port的,以实现它的唯一性,所以除了变化IP可以实现虚拟主机外,通过端口的变化也是可以实现的。不过在访问互联网是,默认的都是80端口,如果你基于port变化,那别人在访问过程中,还需要输入端口号,这不是画蛇添足吗?不过,你也可以通过URL重写,实现将指定的端口跳到80端口上,这当然就不如这里介绍的第三种方法方便了。

   3)基于不同的FQDN实现不同的虚拟主机

       实现过程基于ServerName的变化 

       在网络的访问过程中,当报文到达服务端以后,内核要负责拆掉IP报文的下四层封装,TCP、IP的都要拆掉,然后再交给用户空间的程序,而报文中除了有TCP和IP的封装,还有http的请求首部,请求首部中有一项叫HOST,里面写的就是在浏览器中输入的主机名,因此,我们完全可以通过根据不同的FQDN来实现在单台服务器上提供多个端点。而这种方法也正是目前各IDC们所使用的方法,你个人想要创建一个网站,难道还要买服务器,再托管到机房吗?NO,你所需要做的就是申请一个域名,再到淘宝买一个空间做绑定就可以了,而他们提供给你的,其实就是一个虚拟主机。

二、虚拟主机的实现过程

   本次过程基于httpd2.2实现,httpd2.4的实现过程和2.2的稍微有些不一样,它是把虚拟主机的那一项从主配置文件中单独拿出来了,但是实现原理还是一样的,只要开启相应的模块就可以了。虚拟主机在以后的使用过程中还再次会用到的,从此就都以2.4为准了。对于本文中的DNS配置,这里只做配置,不做说明,原理及详细介绍,请参考我的博客中关于DNS系列的博文。

   案例说明:www.a.com,www.b.com,www.c.com,三个站点放在同一台服务器上,基于DNS实现 

1、为三个站点创建三个区域

wKiom1MuOJqzjLhfAAAiBUCJ7JA889.png

2、创建三个站点的区域文件数据库并填写资源记录,三个站点的IP和DNS都相同,只有主机名不同

   1)创建a.com的区域文件数据库并填写资源记录

wKioL1MuOMeBKatIAAAmkPX4MFE729.png

   2)创建b.com的区域文件数据库并填写资源记录

wKiom1MuOQqRciShAAAm_0Dqpc4037.png

   3)创建c.com的区域文件数据库并填写资源记录

wKioL1MuOPbwJs4gAAAmjTFNscs915.png

3、检查DNS是否可以解析三个站点

wKiom1MuOkqjzJCQAABpAtUMISQ483.png

   www.com.com解析成功,另外www.b.com和www.c.com也可以解析成功,这里就不再上图了

4、修改httpd的主配置文件

   虚拟主机的实现首先要关闭中心主机,关闭中心主机,只需要把/etc/httpd/conf/httpd.conf中的DocumentRoot注释掉就可以了,这里的这个主配置文件是httpd默认的位置,如果你在安装httpd过程中选择了指定位置,只需要找你的主配置文件就可以了。

   1)关闭中心主机

wKioL1MuO2ygnJm3AABMXqtrtdE140.png

 2)配置VirtualHost,在httpd2.2中,NameVirtualHost这一项需启用,而且那个*:80需要和下面的各个VirtualHost中的保持一样,如果是*:80,就都是*:80;如果是IP:80,则都需要是IP:80。在httpd2.4中不需要此项。

wKiom1MuO8CRwogbAAChfH9GjOY561.png

5、启动httpd服务和named服务,并检查端口是否已经成功监听

wKioL1MuPMCj1xI2AABt_C5s1X0941.png

6、测试

   1)为了证明实验的有效性和真实性,这里的测试去windows客户端中进行,并把DNS服务器的地址改为刚才配置的服务器的IP地址

wKiom1MuPVqicQcbAADWAFtRdA4751.png

  2)访问下三个站点试试

wKioL1MuPWHQNJo7AAEBRss_XUY349.png

三个站点都可以通过DNS解析正常访问,实验成功,OK!










本文转自 nmshuishui 51CTO博客,原文链接:http://blog.51cto.com/nmshuishui/1381700,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
363 2
|
Kubernetes jenkins Shell
|
存储 缓存 NoSQL
redis的过期淘汰策略
只能存储 20w 条数据,那肯定要保证redis存储的都是热点数据,即:被频繁访问到的数据;并且要保证Redis的内存能够存放20w数据,要计算出Redis内存的大小。
199 0
|
存储 机器学习/深度学习 数据挖掘
向量化操作简介和Pandas、Numpy示例
Pandas是一种流行的用于数据操作的Python库,它提供了一种称为“向量化”的强大技术可以有效地将操作应用于整个列或数据系列,从而消除了显式循环的需要。在本文中,我们将探讨什么是向量化,以及它如何简化数据分析任务。
704 0
|
安全 网络安全 数据安全/隐私保护
XSHELL与XFTP的使用方法
一、XSHELL与XFTP介绍 Xshell是一款远程连接虚拟机系统的 SSH 客户机软件; Xftp的主要功能是在本地计算机和远程服务器之间提供安全的文件传输服务; 免费版官网下载地址:https://www.xshell.com/zh/free-for-home-school/ 二、Xshell的使用方法 1、新建一个会话:在Xshell中,你需要创建一个会话来连接到远程服务器或网络设备。点击Xshell菜单栏的“文件”(File)选项,然后选择“新建”(New)来创建一个新会话。在弹出的对话框中,填写远程服务器的信息,包括服务器地址、端口号、用户名和密码等。 2、连接到远程服务器:在会
646 0
|
Kubernetes Cloud Native 开发者
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
|
存储 Kubernetes 负载均衡
从零开始:阿里云上Kubernetes集群的搭建与部署
Kubernetes (通常简称为K8s) 是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。它最初由 Google 开发,现在由云原生计算基金会(CNCF)维护。Kubernetes 提供了一个可靠的容器编排环境,使得在多个节点上运行和管理容器化应用程序变得更加容易。它支持多种容器运行时,例如 Docker、rkt、CRI-O 等,可以在不同的云服务商、虚拟机或物理机上运行。Kubernetes 具有许多功能,例如自动化应用程序部署和扩展、负载均衡、自动容器重启、滚动更新、存储管理、自动发布和回滚等。它还提供了一些常见的应用程序模式,例如微服务、分布式系统和无状态应用程序,
14010 3
|
Linux API iOS开发
|
架构师 搜索推荐 IDE
架构师13年经验而成的软件平台架构设计与技术管理之道终于曝光了
前言 关于软件平台架构设计与技术管理之道的介绍: 计算机技术的发展日新月异,市面上软件架构、项目管理、IT技术类书籍层出不穷,从软件专业和技术视角进行阐述的居多,但对技术烂熟于胸,还是无法保证你能成为优秀架构师或驾驭平台的技术负责人。
306 0
|
缓存 资源调度 JavaScript
Vue实战【Vue项目开发时常见的几个错误】
Vue实战【Vue项目开发时常见的几个错误】
298 1