实现基于FQDN虚拟主机

环境:该实验的环境是在centos6上进行的,http的版本为2.2

步骤一:安装http2.2

直接使用yum命令安装即可

实现基于FQDN虚拟主机_第1张图片

步骤二:在/app目录下准备好存放网站主页的目录

site1,site2,site3分别对应www.a.com,www.b.com, www.c.com的主页存放目录位置,同时在三个文件夹中创建对应的主页文件index.html,并编辑主页文件

0a303ff9058360767b21381ef7ae6f6c.png

步骤三:模拟三个DNS解析

注:该DNS解析是在用来测试的主机上添加的。

4f2d8f554a83d2248f2d7fef0e6457f7.png

步骤四:在/etc/httpd/conf.d目录下创建新的配置文件

vim/etc/httpd/conf.d/test.conf

实现基于FQDN虚拟主机_第2张图片

NameVirtualHost*:80 (在centos6http2.2上要启用基于FQDN的多虚拟主机必须加上这一行,也可以在主配置文件中取消注释开启该功能,在http2.4中不需要加这一行)

*表示所有的IP地址都可以访问)

documentroot /app/site1 (表示网站主页存放的目录,需要注意的是,要将网址与主页文件相对应)

servername  www.a.com (区分不同的网站是依靠名字来区分)

errorlog  logs/a.com.errlog (错误日志的存放文件,错误日志的日志格式不能定制)

customloglogs/a.com.accesslog combined (访问日志的存放文件,combined表示日志的格式,也可以自己定义)

 

documentroot /app/site2

servername  www.b.com

errorlog  logs/b.com.errlog

customloglogs/b.com.accesslog combined

 

documentroot /app/site3

servername  www.c.com

errorlog  logs/c.com.errlo

customloglogs/c.com.accesslog combined

步骤五:关闭防火墙及SELinux策略

如果缺少步骤五则会访问失败

实现基于FQDN虚拟主机_第3张图片

步骤六:开启服务

fbca8ed672443bedb628928104a90286.png

步骤七:测试

可在另外的主机上测试,但是要提前配置/etc/hosts文件

实现基于FQDN虚拟主机_第4张图片

原理解析

DNS如何解析同一个IP的不同域名?

真正访问的时候http的请求报文中源地址和目标地址都是一样的,不能区分请求的不同网站,但是在http报文首部中带有访问的网址,据此来做出相应的回应,具体如下图所示:

实现基于FQDN虚拟主机_第5张图片