虚拟主机详细的配置

时间:2024-04-17 14:00:28

配虚拟主机的主要目的:在一台web服务器上,虚拟出多个web站点!

首先来看一下动态网站访问的基本原理

 

一.配置基于域名的虚拟主机

Apache的虚拟主机分成两种:

基于IP地址的虚拟主机   192.168.96.12  192.168.96.13

基于域名的虚拟主机  www.test.com   www.shop.com

而我们要做的都是基于域名的虚拟主机(为每一个web站点分配不同的域名(服务器名),根据浏览器所访问的域名的不同的,而查看不同的目录资源(不同的网站!))

我们现在要做的:

访问www.test.com的时候,访问上面test目录下的web资源

访问www.shop.com的时候,访问上面shop目录下的web资源

 以上的工作是由Apache来完成的,所以需要修改Apache的配置文件!

 

注意:

Apache默认的提供了一个专门配置虚拟主机的一个配置文件:

在conf/extra/httpd-vhost.conf

开始配置

第一步:需要在主配置文件里面加载虚拟主机的配置文件

 

 

 

第二步:在虚拟主机的配置文件中创建虚拟主机

 一台虚拟主机最基本的信息有:

     域名(服务器名):是通过ServerName指令来完成!

     目录(站点所在的根目录):是通过DocumentRoot指令来完成的!

   

    此时,重启Apache!一台虚拟主机就搭建完成!  但是也就只是搭建完成,还是无法访问。

   

第三步:配置浏览器端的域名解析

   此时,浏览器应该利用域名去访问服务器,但是浏览器需要先知道域名所对应的服务器的IP地址是什么!

   打开windows自带的hosts文件

   

 再次输入地址

注意:如果配置了虚拟主机,那么原来的默认的文档根目录就失效了,或者说被第一个虚拟主机所覆盖了!为了解决这个问题,需要额外增加一个localhost的虚拟主机!

上面的第一个虚拟主机就是为了解决这个问题!

 

 

二.目录访问权限

   为了学习权限,在添加一台虚拟主机

   

  

输入地址:www.xiaoshou.com/xiaoshou.html 结果:

好吧,退一步,在输入:www.xiaoshou.com看看 

 

好的,ok,跟我肛上了...

因为Apache可以控制浏览器是否有能力访问某个目录!默认的,Apache拒绝所有目录的访问权限

如果需要开放某个目录的访问权限,需要通过<Directory目录的路径>

 </Directory>指令段对该目录进行单独的设置!

 

 

因为目录的配置,针对当前目录以及当前目录的子目录都生效,

所以刚才的test和shop两个虚拟主机默认的都是可以访问的!

 

 

所以,如果需要开访问itcast目录的访问权限,需要对该目录进行单独的设置:

 

 

重启Apache!

 

问题又来了,如果直接访问域名:

而直接访问test虚拟主机的时候:

也就是说,直接访问域名(服务器名)的时候,一共有三种情况:

第一:直接访问默认的某个页面,比如上面的localhost

第二:展示列表,比如上面的www.test.com

第三:直接Forbidden

 

配置索引页的指令:

DirectoryIndex

从左往右依次查找,存在就使用!

允许展示列表的指令:

Options Indexes

 

 重启Apache

 

 清理一下缓存

 

 三.Apache配置系统

Apache的配置文件,分成主配置文件(httpd.conf以及extra下的其他配置文件)和分布式

 

分布式配置文件

概念:

分散到各个目录中的Apache的配置文件,所以,其中的配置,只针对该目录及其子目录生效

好处: 不用重启服务器,直接能生效

第一,  在主配置文件中开启允许分布式配置文件的权限

利用指令Allowoverride all

 

第二,  在相应的目录下增加分布式配置文件

 添加.htaccess文件方法

    1.在sublime直接生成保存

    2.用命令行生成

分布式配置文件的名称:.htaccess

里面所写的配置,与<directroy></ directroy>指令端里面的配置的基本一样!

 

特点

修改之后立即生效!不用重启Apache,说明Apache每次读取到该目录的时候

,都要对里面的分布式配置文件进行读取!