一.虚拟主机简介
虚拟主机,又称虚拟服务器、主机空间或是网页空间,是一种让单一服务器可以运行多个网站或服务的技术。虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
虚拟主机技术主要应用于HTTP,FTP,EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。
二.虚拟主机的实现类型
1.基于主机名(Name-based)
有客户端提供网址,决定其对应的服务,这个方法有效减少IP占用,但必须依赖DNS提供域名解析服务。若DNS部分解析出现故障,则对应此名称的服务也会无法适用。
2.基于IP(IP-based)
在服务器里绑定多个IP,不同的IP来管理多个服务。
3.基于端口(Port-based)
近似于IP地址对应,不过是在同一个IP之下,利用不同的Port端口号来区别不同的服务,藉以快速创建多个虚拟主机。例如:
192.168.0.1:80
192.168.0.1:8080
192.168.0.1:8888
不过这类的应用大多用在私人或实验性质的服务中,原因是用户无法利用默认的端口号(例如Web服务的默认端口号80)取用提供的服务,除非用户知道提供服务的端口号。
三.三种虚拟主机实现的基本配置
实验要求:在一台主机上搭建2个网站服务
www.hyd.com
www.my.com
实现基于主机名的虚拟主机(开启:NameVirtualHost);
实现基于IP的虚拟主机(多个ip需要把中心主机取消);
实现基于端口的虚拟主机(需在全局配置中配置listen);
创建实验环境:
实现通过域名访问站点需要DNS的解析,可修改DNS数据库文件记录将2个站点IP都指向本机,
%SystemRoot%\system32\drivers\etc\添加
www.hyd.com 172.16.6.1
www.my.com 172.16.6.1
创建网站存放目录及测试页
# mkdir -p /data/web/{linuxidc,linuxmi}
# echo "
www.hyd.com
" > /data/web/hyd/index.html# echo "
www.my.com
" > /data/web/my/index.html剩下的就是配置虚拟主机了。。。,需要注意的事centos6.5自带apache,此处不再配置。
[root@localhost ~]# rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64
注意,配置虚拟主机由两种方法:直接在httpd.conf里面添加VirutalHost标签对定义即可,或者在conf.d目录下新建文件virtual.conf。本文直接在httpd.conf里面配置。
1.搭建基于主机名虚拟主机
打开web服务的主配置文档:vim /etc/httpd/conf/httpd.conf
开启:NameVirtualHost 172.16.6.1:80
NameVirtualHost 172.16.6.1:80ServerAdmin www.hyd.com DocumentRoot /data/web/hyd ServerName www.hyd.com ErrorLog logs/www.hyd.com-error_log CustomLog logs/www.hyd.com-access_log common ServerAdmin www.my.com DocumentRoot /data/web/my ServerName www.my.com ErrorLog logs/www.my.com-error_log CustomLog logs/www.my.com-access_log common
#httpd -t //语法检测
#service httpd restart
浏览器测试
http://www.hyd.com
http://www.my.com
2.搭建基IP的虚拟主机
# ifconfig eth0:0 172.16.6.10 //设置另一个IP
# vim /etc/httpd/conf/httpd.conf //修改配置文件
DocumentRoot /data/web/hyd ServerName 172.16.6.1 ErrorLog logs/172.16.6.1-error_log CustomLog logs/172.16.6.1-access_log common DocumentRoot /data/web/my ServerName 172.16.6.10 ErrorLog logs/172.16.6.10-error_log CustomLog logs/172.16.6.10-access_log common
#httpd -t //语法检测
#service httpd restart
浏览器测试
http://172.16.6.1
http://172.16.6.10
3.搭建基于端口的虚拟主机
# vim /etc/httpd/conf/httpd.conf //修改配置文件
........ Listen 80 Listen 81 //在全局配置中仍需添加端口 .........
DocumentRoot /data/web/hyd ErrorLog logs/172.16.6.1:80-error_log CustomLog logs/172.16.6.1:81-access_log common DocumentRoot /data/web/my ErrorLog logs/172.16.6.1:81-error_log CustomLog logs/172.16.6.1:81-access_log common
#httpd -t //语法检测
#service httpd restart
浏览器测试
http://172.16.6.1:80
http://172.16.6.10:81
四.虚拟主机扩展配置
1.限制部分ip访问某一虚拟主机,如仅允许192.168.0.0/24网络中的客户机访问
分别使用两台不同IP进行对比测试。第一台是172.16.6.3,第二台是172.16.6.2
DocumentRoot /data/web/hyd ErrorLog logs/172.16.6.1:80-error_log CustomLog logs/172.16.6.1:81-access_log common Options Indexes AllowOverride None Order allow,deny Allow from 172.16.6.2/24
#httpd -t
#service httpd restart
首先用一普通IP查看http://172.16.6.1,无法查看。
用ip为172.16.6.2查看。
2.为某一虚拟主机提供基本认证功能,并为其提供虚拟用户webuser1 密码均redhat,要求允许此用户在提供密码的情况下访问此站点;
DocumentRoot /data/web/my ErrorLog logs/172.16.6.1:81-error_log CustomLog logs/172.16.6.1:81-access_log common Options Indexes AllowOverride AuthConfig AuthName "AuthConfig.." AuthType basic AuthUserFile /etc/httpd/.htpasswd require user webuser1 Order allow,deny Allow from all
[root@localhost httpd]# htpasswd -cm /etc/httpd/.htpasswd webuser1 New password: Re-type new password: Adding password for user webuser1
#httpd -t //语法检测
#service httpd restart
浏览器测试
http://172.16.6.1:81