文章目录
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