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
[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服务
[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
[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 #重启服务使其生效
[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 #重启服务
[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 ~]#
[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 ~]#
[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 ~]#