一.虚拟主机简介

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

虚拟主机技术主要应用于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都指向本机,

在客户端设置基于/etc/hosts主机名的解析:

%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:80

    ServerAdmin 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,无法查看。

CentOS 6.5 Apache搭建虚拟主机_第1张图片  

用ip为172.16.6.2查看。

CentOS 6.5 Apache搭建虚拟主机_第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

CentOS 6.5 Apache搭建虚拟主机_第3张图片

CentOS 6.5 Apache搭建虚拟主机_第4张图片