为什么需要用到虚拟主机:

   首先它是一个主机,他有操作系统

   我们还需要IP地址 可是对于那些小站点而讲,是及其浪费的。所以我们期望能够在一台主机上虚拟出多个主机,能够服务于多个不同的站点


###################################

apache :

     中心主机:section2

     虚拟主机:3

         同一个IP 主机名不同

               www.magedu.com

               www.a.org

虚拟主机的定义:得先取消中心主机,即注释DocumentRoot

   <VirtualHost Host>

   </VirtualHost>

1、基于IP,Host的写法

     HOST

       IP1:80

       IP2:80

2、基于端口:

     HOST

       IP:80

       IP:8080

3、基于域名:

      *:80

   ServerName 不能相同  

#####################################

具体实现方法:基于IP认证

   1、取消中心主机 #DocumentRoot

   2、cd /etc/httpd/conf.d;;vim virtual.conf

   3、

        <VirtualHost 192.168.9.247:80>

             ServerName hello.magedu.com

             DocumentRoot "/www/magedu.com"

        </VirtualHost>


        <VirtualHost 192.168.9.248:80>

             ServerName www.a.org

             DocumentRoot "/www/a.org"

        </VirtualHost>

  4、httpd -t检查语法是否有错误

  5、mkdir -pv /www/{magedu.com,a.org}创建目录

  6、cd magedu.com ;;vim index.html

  7、编辑

     <title>MageEdu</title>

     <h1>magedu.com</h1>

  8、ip addr add 192.168.9.248/16 dev eth0 为主机再加一个IP地址

  9、ip addr show 显示出来

##################################

基于端口认证:

  1、追加编辑conf.d下的配置文件;;;你会发现已经有了247这个IP 但是端口不同

        <VirtualHost 192.168.9.247:8080>

             ServerName www.b.net

             DocumentRoot "/WWW/b.net"

        </VirtualHost>

  2、编辑主配置文件/etc/httpd/conf/httpd.conf

        Listen 80

        Listen 8080

  3、编辑/www/b.net/index.html 

  4、重启即可

#################################################################

基于名称的虚拟主机

  0、vim /etc/httpd/conf/httpd.conf

  1、NameVirtualHost *:80 解除注释    意思是80端口上的所有IP 

  3、vim /etc/httpd/conf/virtual

  4、在第一行加 NameVirtualHost 192.168.9.248:80

        <VirtualHost 192.168.9.248:80>

             ServerName www.a.org

             DocumentRoot "/www/a.org"

        </VirtualHost>


        <VirtualHost 192.168.9.248:80>

             ServerName www.b.gov

             DocumentRoot "/www/b.gov"

        </VirtualHost>

############################################333333333

还可以自定义指定日志存放位置格式

        <VirtualHost 192.168.9.248:80>

             ServerName www.b.gov

             DocumentRoot "/www/b.gov"

             CustomLog/var/httpd/magedu.com/access_log combined

        </VirtualHost>

  只要有权限,重启后就会自动创建这个目录

#########################################################33

让a.org拒绝192.168.9.226这个地址访问

        <VirtualHost 192.168.9.248:80>

             ServerName www.a.org

             DocumentRoot "/www/a.org"

             <Directory "/www/d.gov">

                 Options none

                 AllowOverride none

                 Order deny,allow

                 Deny from 192.168.9.226

             </Directory>

        </VirtualHost>

     保存    httpd -t 检查是否有语法错误   重启 

#####################################################

让a.org需要输入用户名密码才能登陆 

        <VirtualHost 192.168.9.248:80>

             ServerName www.a.org

             DocumentRoot "/www/a.org"

             CustomLog /var/log/httpd/a.org/access_log combined

             <Directory "/www/a.org">

                    Options none

                    AllowOverride authconfig

                    AuthType basic

                    AuthName "Restrict area."

                    AuthUserFile "/etc/httpd/.htpasswd"

                    Required valid-user

             </Directory>

        </VirtualHost>

保存;;httpd -t 检查是否有语法错误

htpasswd -c -m /etc/httpd/.htpasswd tom添加tom用户

再添加用户就把-c去掉

htpasswd  -m /etc/httpd/.htpasswd hadoop

########################################################

如果访问一个压根不存在的一个虚拟主机: 

<VirtualHost 192.168.9.247:80>

        ServerName _default_

        DocumentRoot "/www/default"

</VirtualHost>

mkdir /www/default

vim /www/default/index.html

    <h1>Default</h1>

重启   注意在编辑的时候  default  尽量放在上边