Web服务器群集--构建虚拟Web主机(Apache)

1.Web主机的介绍

  • 虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点,并不独立占用一台真正的计算机
  • 使用httpd可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点。httpd支持的虚拟主机类型:
    基于域名的虚拟主机
    基于IP地址的虚拟主机
    基于端口的虚拟主机

注意:基于域名和端口的虚拟主机,在生产环境广泛使用。

2.基于域名的虚拟主机

应用示例

  • 构建2个虚拟Web站点,在浏览器中访问这两个域名时,分别显示不同的内容,两个站点分别为:
    www.kgc.com IP地址为 192.168.100.70
    www.kcce.com IP地址为192.168.100.70

分析要求,可以概括为三个步骤:

  • 为虚拟主机提供域名解析
  • 添加虚拟主机配置
  • 为虚拟主机准备网页文档
  • 在客户机中访问虚拟web主机

2.1 为虚拟主机提供域名解析

  • 首先需要向DNS服务提供商注册各虚拟web站点的域名,实验过程中可以自行搭建测试用的DNS服务器。主配置文件中添加 kgc.com 和 kcce.com 两个区域。各区域的地址数据库中需映射相对应的记录,确认客户机能够正确解析到 www.kgc.com 和 www.kcce.com的地址,相关配置如下
[root@localhost ~]# yum -y install bind* 	//安装DNS服务的软件包bind,做两个站点域名对应IP地址的解析
[root@localhost ~]# vim /etc/named.conf		//修改主配置文件
.....
options {
        listen-on port 53 { any; };                 //修改为any
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };                  //修改为any
......	//省略部分信息
[root@localhost ~]# vim /etc/named.rfc1912.zones	//修改区域配置文件
.......
zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};
zone "benet.com" IN {
        type master;
        file "benet.com.zone";
        allow-update { none; };
};
...... //省略部分信息
[root@localhost ~]# cd /var/named/          //进入/var/named目录下复制区域数据配置文件的模板文件
[root@localhost named]# cp -p named.localhost kgc.com.zone 
[root@localhost named]# cd
[root@localhost ~]# vim /var/named/kgc.com.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.100.70		//添加地址解析

[root@localhost named]# cp -p kgc.com.zone benet.com.zone
				//将www.kgc.com的区域数据配置文件复制为www.benet.com的区域数据配置文件
[root@localhost named]# systemctl start named	//启动域名解析服务
[root@localhost named]# systemctl start httpd
[root@localhost named]# systemctl stop firewalld  	//关闭firewall防火墙
[root@localhost named]# setenforce 0

2.2 添加虚拟主机配置

[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# mkdir extra
[root@localhost conf]# cd extra/
[root@localhost extra]# vim /usrl/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>      //<VirtualHost> 标记性语言标识,IP:端口,*表示所有网段
  DocumentRoot "/var/www/html/kgccom"   //虚拟主机站点路径,首页文件目录
  ServerName www.kgc.com                  //虚拟主机域名
  ErrorLog "Iogs/www.kgc.com.error log"   //错误日志
  CustomL og "logs/www.kgc.com.access_ log" common //访问日志
  <Directory "/var/www/html">           //子集标签,设置站点目录访问权限
    Require all granted     		 //设置网页文件允许所有主机访问
  </Directory>
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/var/www/html/kccecom"
ServerName www.kcce.com
ErrorLog "Iogs/www.kgc.com.error log"  
  CustomL og "logs/www.kgc.com.access_ log" common 
  <Directory "/var/www/html">           
    Require all granted     	
  </Directory>
</VirtualHost>

2.3 为虚拟主机提供网页文档

  • 配置Apache 站点目录首页文件
[root@localhost extra]# cd /var/www/html
[root@localhost html]# mkdir kgc benet
[root@localhost html]# ls
benet  kgc
[root@localhost html]# cd benet
[root@localhost benet]# vim index.html
<h1>this is benet web</h1>
[root@localhost kgc]# vim index.html 
<h1>this is kgc web</h1>

注意:由于这个extra目录下的httpd-vhosts.conf配置文件是自己创建的,apache服务无法自动识别,需要在主配置文件的最后指向 httpd-vhosts.conf(类似于DNS服务的主配置文件中会指向区域配置文件)

[root@localhost kgc]# vim /etc/httpd/conf/httpd.conf 
......省略内容
IncludeOptional conf.d/*.conf
Include conf/extra/httpd-vhosts.conf      //指向自己创建的配置文件位置,加载独立配置文件
[root@localhost ~]# cd
[root@localhost ~]# systemctl restart httpd			//重启Apache服务
[root@localhost ~]# netstat -anpt | grep httpd		//查看监听的端口
tcp6       0      0 :::80                   :::*                    LISTEN      11698/httpd 

2.4 在客户机中访问虚拟web主机

  • 开一台win10的虚拟机作为客户机,DNS地址换成虚拟主机的地址

在这里插入图片描述
在这里插入图片描述

3.基于IP地址、基于端口的虚拟主机

3.1 基于IP地址的虚拟主机

应用示例

  • 构建2个虚拟Web站点,在浏览器访问这两个IP时,分别显示不同的内容。Web站点分别为:
    www.kgc.com, IP地址为192.168.100.70
    www.kcce.com, IP地址为192.168.100.80

1)添加虚拟主机配置

[root@test01 extra]# pwd
/etc/httpd/conf/extra
[root@test01 extra]# vim vhost.conf

<VirtualHost 192.168.100.70:80>
  DocumentRoot "/var/www/html/kgc"
  ErrorLog "logs/www.kgc.com.error_log"
  CustomLog "logs/www.kgc.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>
 
<VirtualHost 192.168.100.80:80>
  DocumentRoot "/var/www/html/kgc02"
  ErrorLog "logs/www.kgc02.com.error_log"
  CustomLog "logs/www.kgc02.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>

2)提供网页文档,添加监听地址

[root@test01 extra]# mkdir /var/www/html/kgc2
[root@test01 extra]# cd /var/www/html/kgc2
[root@test01 kgc2]# vim /var/www/html/kgc2/index.html
<h1>this is kgc2 web</h1>
[root@test01 extra]# vim /etc/httpd/conf/httpd.conf 
.......
Listen 192.168.100.70:80
Listen 192.168.100.80:80
#Listen 80
.......	//省略部分信息

3)启动apache服务,查看监听地址

[root@test01 extra]# systemctl restart httpd
[root@test01 extra]# netstat -ntap | grep httpd
tcp        0      0 192.168.100.80:80      0.0.0.0:*               LISTEN      15674/httpd         
tcp        0      0 192.168.100.70:80      0.0.0.0:*               LISTEN      15674/httpd 

3.2 基于端口的虚拟主机

不同端口应用示例

  • 构建2个虚拟Web站点:
    www.kcce.com IP地址,端口分别为 192.168.100.70:80
    www.kcce.com IP地址,端口分别为 192.168.100.70:8080

1)添加虚拟主机配置

[root@test01 extra]# vim vhost.conf
<VirtualHost *:80>
  DocumentRoot "/var/www/html/benet"
  ServerName www.benet.com
  ErrorLog "logs/www.benet.com.error_log"
  CustomLog "logs/www.benet.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>
<VirtualHost *:8080>                       //添加8080端口
  DocumentRoot "/var/www/html/benet02"
  ServerName www.benet.com
  ErrorLog "logs/www.benet02.com.error_log"
  CustomLog "logs/www.benet02.com.access_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>

2)提供网页文档,添加监听端口

[root@test01 extra]# mkdir /var/www/html/benet02
[root@test01 extra]# vim /var/www/html/benet02/index.html
<h1>this is benet02 web</h1>
[root@test01 extra]# vim /etc/httpd/conf/httpd.conf    //主配置文件监听不同端口
........
Listen 192.168.100.70:80
Listen 192.168.100.70:8080
#Listen 80

3)重启apache服务,查看监听地址

[root@test01 extra]# systemctl restart httpd
[root@test01 extra]# netstat -lnput | grep httpd
tcp        0      0 192.168.100.70:8080    0.0.0.0:*               LISTEN      15451/httpd         
tcp        0      0 192.168.100.70:80      0.0.0.0:*               LISTEN      15451/httpd 

在这里插入图片描述
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页