众所周知,一台物理服务器只能运行一个站点,但虚拟主机的的实现可以让一台物理

主机运行多个站点,具有很大的实用价值
 
实现虚拟主机有三种不同的方式:
基于IP的虚拟主机:使用不同的IP地址提供不同的站点
基于端口的虚拟主机:使用不同的端口提供不同的站点
基于主机头的虚拟主机:使用不同的主机名提供不同的站点
 
下面让这三种方式分别给予实现:
 
实现平台为apache-2.4.3;其实现的服务httpd监听端口为80端口
实现虚拟主机先注释掉主配置文件/etc/httpd/conf/httpd.conf中的中心主机项:
   
   
   
   
  1. #DocumentRoot "/var/www/html" 
1、基于IP的虚拟主机实现:
本机的ip地址为172.16.14.1;还需要再添加一个IP地址
 
    
    
    
    
  1. # ifconfig eth0:0 172.16.14.2/16 
在主配置文件:/etc/httpd/conf/httpd.conf;添加如下内容:
    
    
    
    
  1. 172.16.14.1:80
  2.     DocumentRoot "/web/site1" 
  3.     ServerName 172.16.14.1 
  4.  
  5. 172.16.14.2:80
  6.     DocumentRoot "/web/site2" 
  7.     ServerName 172.16.14.2 
  8.  
在上面添加了两个站点site1,site2,
为其创建两个目录:
    
    
    
    
  1. # mkdir -pv /web/{site1,site2} 
为站点1提供网页:
    
    
    
    
  1. # vim /web/site1/index.html 添加如下内容: 
  2.  
  3. <html> 
  4. <title>site1title> 
  5. <h1>www.magedu.comh1> 
  6. html> 
为站点2提供网页:
    
    
    
    
  1. # vim /web/site2/index.html 添加如下内容: 
  2.  
  3.  
  4. site2 
  5. www2.magedu.com

     
  6.  
检查语法:
    
    
    
    
  1. # httpd -t  
重启服务:
    
    
    
    
  1. # service httpd restart 
测试网页结果:站点1:

虚拟主机的三种实现方式_第1张图片

站点2::

虚拟主机的三种实现方式_第2张图片

2、基于端口的虚拟主机实现
 
在配置文件/etc/httpd/conf/httpd.conf添加8080监听端口
      
      
      
      
  1. Listen 80 
  2. Listen 8080 
设置主配置文件:/etc/httpd/conf/httpd.conf
    
    
    
    
  1. 172.16.14.1:80
  2.     DocumentRoot "/web/site1" 
  3.     ServerName 172.16.14.1 
  4.  
  5. 172.16.14.1:8080
  6.     DocumentRoot "/web/site2" 
  7.     ServerName 172.16.14.2 
  8.  
重启服务:
刷新页面显示:
80端口页面为:

虚拟主机的三种实现方式_第3张图片

8080端口:

虚拟主机的三种实现方式_第4张图片

3、同时使用IP和端口的虚拟主机实现
添加第三个站点:
     
     
     
     
  1. 172.16.14.2:80
  2.     DocumentRoot "/web/site3" 
  3.     ServerName 172.16.14.2 
  4.  
为第三个站点设置目录和添加页面内容:
     
     
     
     
  1. # mkdir -pv /web/site3 
  2. # vim /web/site3/index.html 
  3.  
  4. site3 
  5. www3.magedu.com

     
  6.  
重启服务:
      
      
      
      
  1. # service httpd restart 
第三个站点显示页面:

虚拟主机的三种实现方式_第5张图片

 

 

4、基于IP和端口的虚拟主机不常用,常用的是基于域名的虚拟主机基于域名的

  虚拟主机的IP和端口是一样的,不同之处是ServerName.

  容器就是基于ServerName来判定虚拟主机是相对于哪一个站点来访问的.

  而基于域名的虚拟主机在apache2.2以后必须要启用配置文件中的NameVirtualHost *:80 

      
      
      
      
  1. NameVirtualHost www.magedu.com:80 

在本机进行域名解析测试:

      
      
      
      
  1. # vim /etc/hosts     添加: 
  2. 172.16.14.1        www.magedu.com  www 
  3. 172.16.14.1        www2.magedu.com  www2 

重启服务,测试结果:

虚拟主机的三种实现方式_第6张图片

 

以上就是用apache实现不同的虚拟主机过程,根据实际需要,在容器中可添加相关的应用:
 
    
    
    
    
  1. 80
  2.     ServerAdmin  
  3.     DocumentRoot   ##网页文件路径
  4.     ServerName   ##主机名
  5.  
  6.     ErrorLog logs/ ##定义网站的错误日志
  7.     CustomLog logs/  ##定义网站的访问日志
  8. #