http实现虚拟主机的简单搭建

http实现虚拟主机的简单搭建_第1张图片

一:实验背景;

1、虚拟主机:将一台运行在互联网上的物理服务器逻辑的划分成多个“虚拟”服务器,它们相互独立,互不干扰;对外表现为多个服务器,充分的利用服务器硬件资源;

2、虚拟主机技术主要应用于http服务;

3、虚机主机实现方式有三种,基于ip、基于端口、基于FQDN;生产中用的最多的就是“基于FQDN域名”的实现方式;

4、做好准备工作:先在/app目录下创建三个目录;

[root@Centos6 /app]# mkdir sjj1
[root@Centos6 /app]# mkdir sjj2
[root@Centos6 /app]# mkdir sjj3
5、然后模拟在三个文件夹下分别创建三个index.html文件,并写上内容;

[root@Centos6 /app]# echo /app/sjj1/index.html > sjj1/index.html
[root@Centos6 /app]# echo /app/sjj2/index.html > sjj2/index.html 
[root@Centos6 /app]# echo /app/sjj3/index.html > sjj3/index.html

二:实验步骤;

一:基于FQDN的实现方式;

1、定义配置文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf 
namevirtualhost *:80                        #启用基于域名的虚拟主机功能;这一项在/etc/httpd/conf/httpd.conf文件里默认被禁用的,我们在这个资配置文件中将其开启
                          #第一台虚拟主机开始位置; *表示默认本机上所有主机ip,走的是默认的80端口
documentroot /app/sjj1                      #指明主站点页面放置的位置 
servername www.a.com                        #指明服务名,在测试时,可以直接使用此名字访问
errorlog logs/a.com.errlog                  #指定错误日志存放目录;默认是相对于/etc/httpd/目录的一个相对位置
customlog logs/a.com.accesslog combined     #指明访问日志存放目录;默认位置同错误日志位置; combined是定义在/etc/httpd/conf/httpd.conf文件下的日志格式,这里引用
                              #每一台虚拟主机的结束标志,与开始地方相对应


documentroot /app/sjj2
servername www.b.com
errorlog logs/b.com.errlog
customlog logs/b.com.accesslog combined



documentroot /app/sjj3
servername www.c.com
errorlog logs/c.com.errlog
customlog logs/c.com.accesslog combined
[root@Centos6 /app]# service httpd restart     #重启httpd服务

二:基于IP的实现方式;

1、模拟三台虚拟主机,所以需要事先准备好三个ip;
[root@Centos6 /app]# ip addr add 192.168.242.10/24 dev eth1
[root@Centos6 /app]# ip addr add 192.168.242.20/24 dev eth1 
[root@Centos6 /app]# ip addr add 192.168.242.30/24 dev eth1
2、定义配置文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf 
                     #每一个站点使用不同的ip,端口号相同
documentroot /app/sjj1                              #内容其实要简单的这一行就行了,下面的日志定义可要可不要
errorlog logs/a.com.errlog
customlog logs/a.com.accesslog combined                                        



documentroot /app/sjj2
errorlog logs/b.com.errlog
customlog logs/b.com.accesslog combined



documentroot /app/sjj3
errorlog logs/c.com.errlog
customlog logs/c.com.accesslog combined
[root@Centos6 /app]# service httpd restart           #重启服务使其生效
 
   
 
   
 
   
 
  

三:基于端口的实现方式;

1、单独使用:定义配置文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf 
listen 8010                           #监听三个自定义的空闲的端口
listen 8020
listen 8030
                  #使用本机上的ip
documentroot /app/sjj1



documentroot /app/sjj2



documentroot /app/sjj3
[root@Centos6 /app]# service httpd restart    #重启httpd服务
2、与基于ip的混合使用;
首先再准备三个目录站点;
[root@Centos6 /app]# mkdir sjjtest1
[root@Centos6 /app]# mkdir sjjtest2
[root@Centos6 /app]# mkdir sjjtest3
[root@Centos6 /app]# echo /app/sjjtest1/index.html > sjjtest1/index.html
[root@Centos6 /app]# echo /app/sjjtest2/index.html > sjjtest2/index.html 
[root@Centos6 /app]# echo /app/sjjtest3/index.html > sjjtest3/index.html 
然后定义配置文件
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf 
listen 8010
listen 8020
listen 8030

documentroot /app/sjj1



documentroot /app/sjjtest1



documentroot /app/sjj2



documentroot /app/sjjtest2



documentroot /app/sjj3



documentroot /app/sjjtest3
[root@Centos6 /app]# service httpd restart    #重启服务

三:实验测试;

一:基于FQDN的测试;

在这里我用Centos 6做的服务器端,用Centos 7做的客户端;所以测试时需要在Centos 7的/etc/hosts文件里写上“192.168.242.202 www.a.com www.b.com www.c.com”;其中192.168.242.202时Centos 6 的ip地址,三个域名分别是三个站点的名字;这样输入不同的域名,实现访问不同的网页;
[root@centos7 ~]# curl www.a.com       
/app/sjj1/index.html                      #第一个站点
[root@centos7 ~]# curl www.b.com 
/app/sjj2/index.html                      #第二个站点
[root@centos7 ~]# curl www.c.com
/app/sjj3/index.html                      #第三个站点
[root@centos7 ~]#
也可以用如下方式访问;
[root@centos7 ~]# curl http://www.a.com/
/app/sjj1/index.html
[root@centos7 ~]# curl http://www.b.com/
/app/sjj2/index.html
[root@centos7 ~]# curl http://www.c.com/
/app/sjj3/index.html
[root@centos7 ~]# 
注意,在这种情况下,使用ip地址访问的话,默认是显示第一个站点(虚拟主机)的页面;
[root@centos7 ~]# curl http://192.168.242.202/
/app/sjj1/index.html                 #默认显示第一个站点(即排在/etc/httpd/conf.d/test.conf定义中的第一个)
[root@centos7 ~]# 

二:基于IP的测试;

一样使用Centos 7作为客户机去访问Centos 6中的服务虚拟主机;输入不同的ip,出现不同的页面
[root@centos7 ~]# curl http://192.168.242.10/
/app/sjj1/index.html
[root@centos7 ~]# curl http://192.168.242.20/
/app/sjj2/index.html
[root@centos7 ~]# curl http://192.168.242.30/
/app/sjj3/index.html
[root@centos7 ~]# 

三:基于端口的测试;

1、在Centos 7中使用Centos 6中的ip加上端口号区分访问,相同ip不同端口号对应不同的访问页面;
[root@centos7 ~]# curl http://192.168.242.202:8010/
/app/sjj1/index.html
[root@centos7 ~]# curl http://192.168.242.202:8020/
/app/sjj2/index.html
[root@centos7 ~]# curl http://192.168.242.202:8030/
/app/sjj3/index.h
2、搭配基于ip的测试;
[root@centos7 ~]# curl http://192.168.242.10:8010/              #在相同的ip下使用不同的端口访问不同的页面(不写端口的话默认走80端口)
/app/sjj1/index.html
[root@centos7 ~]# curl http://192.168.242.10/     
/app/sjjtest1/index.html
[root@centos7 ~]# curl http://192.168.242.20:8020/
/app/sjj2/index.html
[root@centos7 ~]# curl http://192.168.242.20/     
/app/sjjtest2/index.html
[root@centos7 ~]# curl http://192.168.242.30:8030/
/app/sjj3/index.html
[root@centos7 ~]# curl http://192.168.242.30:80/  
/app/sjjtest3/index.html
[root@centos7 ~]# 

四:实验总结;

1、基于FQDN的内容和步骤稍微多一点,但是比较实用,生产中用的较多;
2、在定义好配置文件后,一定要记得重启httpd服务;
3、在做基于FQDN的实验时,有同学DNS这一块不是太熟,将dns写到了服务器Centos 6的/etc/hosts文件中,导致在客户端Centos 7上使用名字访问时无结果;
4、在做定义配置文件时,建议不要直接在主配置文件/etc/httpd/conf/httpd.conf里改动,而是在其子配置文件/etc/httpd/conf.conf/**.conf另创建一个配置文件中定义;

你可能感兴趣的:(linux)