实验-------虚拟主机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验-------虚拟主机相关的知识,希望对你有一定的参考价值。

虚拟主机

有三种实现方案:

    基于ip:为每个虚拟主机准备至少一个ip地址

    基于port:为每个虚拟主机使用至少一个独立的port

    基于FQDN:为每个虚拟主机使用至少一个FQDN

 注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机

   禁用方法:注释中心主机的DocumentRoot指令即可

 说明:当有虚拟主机的时候,默认站点是虚拟主机的第一个站点

     基于FQDN的方式是根据http报文首部来确定客户端访问的是哪个站点 

虚拟主机的配置方法:

<VirtualHost IP:PORT>

ServerName FQDN     当基于RQSN的时候这一项才起作用

DocumentRoot “/path"

</VirtualHost>

建议:上述配置存放在独立的配置文件中

其它可用指令:

ServerAlias:虚拟主机的别名;可多次使用

ErrorLog: 错误日志

CustomLog:访问日志

<Directory “/path">

</Directory>


如下实验每次修改完httpd配置文件之后都需要service httpd reload重新加载文件


一、基于IP的虚拟主机示例

前提是准备多个ip,并且每个ip对应一个站点,方便测试

   ip addr add 192.168.119.10/24 dev eth0

   ip addr add 192.168.119.20/24 dev eth0

   ip addr add 192.168.119.30/24 dev eth0

mkdir /app/site1 /app/site2 /app/site3

echo /app/site1/index.html > /app/site1/index.html

echo /app/site2/index.html > /app/site2/index.html

echo /app/site3/index.html > /app/site3/index.html

  vim /etc/httpd/conf.d/test.conf

    <VirtualHost 192.168.119.10:80>

    DocumentRoot "/app/site1"

    </VirtualHost>


    <VirtualHost 192.168.119.20:80>

    DocumentRoot "/app/site2"

    </VirtualHost>

 

    <VirtualHost 192.168.119.30:80>

    DocumentRoot "/app/site3"

    </VirtualHost>

技术分享

测试:    curl http://192.168.119.10

      curl http://192.168.119.20

      curl http://192.168.119.30

技术分享 

但是使用ip访问不现实,所以在客户端模拟出dns,然后使用域名来访问

      vim /etc/hosts  添加三行

      192.168.119.10 www.a.com

      192.168.119.20 www.b.com

      192.168.119.30 www.c.com

技术分享 

测试:

        curl http://www.a.com

        curl http://www.b.com

        curl http://www.c.com

技术分享

二、基于端口的虚拟主机(可和基于IP的虚拟主机混和使用)

   vim /etc/httpd/conf.d/test.conf

        listen 8001

        listen 8002

        listen 8003

        <VirtualHost *:8001>

        DocumentRoot "/app/site1"

        </VirtualHost>

 

        <VirtualHost *:8002>

        DocumentRoot "/app/site2"

        </VirtualHost>

 

        <VirtualHost *:8003>

        DocumentRoot "/app/site3"

        </VirtualHost>

技术分享 

测试:

     curl http://192.168.119.129:8001

     curl http://192.168.119.129:8002

     curl http://192.168.119.129:8003

技术分享 

同样可以模拟dns使用域名访问而不需要输入ip

     vim /etc/hosts

  192.168.119.129 www.a.com www.b.com www.c.com

测试:

      curl http://www.a.com:8001

        curl http://www.b.com:8002

        curl http://www.c.com:8003

三、基于FQDN的虚拟主机:

  准备条件:在客户端模拟三个站点的解析

    vim /etc/hosts

        192.168.119.129 www.a.com www.b.com www.c.com

    技术分享   

服务器端配置:

   vim /etc/httpd/conf.d/test.conf

     NameVirtualHost *:80       httpd2.4不需要此指令

 

     <VirtualHost *:80>

      ServerName www.a.com

      DocumentRoot "/app/site1"

       errorlog  logs/a.com.errlog  错误日志

       customlog logs/a.com.accesslog combined  访问日志

      </VirtualHost>

 

      <VirtualHost *:80>

      ServerName www.b.net

      DocumentRoot "/app/site2"

       errorlog  logs/b.com.errlog  错误日志

       customlog logs/b.com.accesslog combined  访问日志

      </VirtualHost>

 

      <VirtualHost *:80>

      ServerName www.c.org

      DocumentRoot "/app/site3"

       errorlog  logs/c.com.errlog  错误日志

       customlog logs/c.com.accesslog combined  访问日志

      </VirtualHost>

技术分享

测试:

     curl http://www.a.com

     curl http://www.b.com

     curl http://www.c.com

技术分享

    curl http://192.168.119.129/

      默认站点是第一个站点

技术分享 

技术分享

以上是关于实验-------虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

思考如何开发虚拟仿真实验教学项目

实验-------虚拟主机

CentOS 7中构建虚拟主机(实验篇)

Nginx基于端口号实现虚拟主机实验

虚拟机下windows xp操作系统安装实验报告~~紧急求助!!

server2016下搭建web服务器&三种虚拟主机实验文档