虚拟主机简介
●虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
●httpd支持的虚拟主机类型
基于域名的虚拟主机
基于IP地址的虚拟主机
基于端口的虚拟主机
(基于域名和端口的生产环境用的多)
基于域名的虚拟主机
示例:构建2个虚拟Web站点
www.test.com 14.0.0.40
www.benet.com 14.0.0.40
1.安装DNS服务的软件包–bind;做两个站点域名对应IP地址的解析
yum -y install bind
[root@service ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
allow-query { any; };
[root@service ~]# vim /etc/named.rfc1912.zones ##区域配置文件中配置域名的两个区域
zone "test.com" IN {
type master;
file "test.com.zone";
allow-update { none; };
};
zone "benet.com" IN {
type master;
file "benet.com.zone";
allow-update { none; };
};
[root@service ~]# cd /var/named/ ##进入/var/named目录下复制区域数据配置文件的模板文件
[root@service named]# cp -p named.localhost test.com.zone
[root@service named]# vim test.com.zone
NS @
A 127.0.0.1
www IN A 14.0.0.40 ##在www.test.com的区域数据配置文件中添加地址解析
[root@service named]# cp -p test.com.zone benet.com.zone
##将www.test.com的区域数据配置文件复制为www.benet.com的区域数据配置文件
2.添加虚拟主机配置
[root@service named]# vim /etc/httpd/conf/extra/httpd-vhosts.conf ##需自己创建extra目录,再配置一份虚拟主机的apache网站配置
VirtualHost *:80>
DocumentRoot "/var/www/html/test" ##虚拟主机站点
ServerName www.test.com ##域名
ErrorLog "logs/www.test.com.error_log" ##指定错误日志文件
CustomLog "logs/www.test.com.access_log" common
##指定访问日志文件,common代表下面还有子集标签,必须要加
<Directory "/var/www/html"> ##<Directory>便签中设置网页的访问权限
Require all granted ##允许所有人访问
</Directory>
</VirtualHost>
<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>
3.注意!由于这个extra目录下的httpd-vhosts.conf配置文件是自己创建的,apache服务无法自动识别,需要在主配置文件的最后指向httpd-vhosts.conf,(类似于DNS服务的主配置文件中会指向区域配置文件)
[root@service named]# vim /etc/httpd/conf/httpd.conf
......省略内容
Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
Include conf/extra/httpd-vhosts.conf ##指向自己创建的配置文件位置
4.为两个网站创建各自的首页
[root@service logs]# cd /var/www/html/
[root@service logs]# mkdir test benet
[root@service test]# vim index.html
<h1>this is test</h1>
[root@service test]# cd ../benet
[root@service benet]# vim index.html
<h1>this is benet</h1>
5.启动服务并进行验证
再开一台win10的虚拟机作为客户机,DNS地址换成虚拟主机的地址
基于端口的虚拟主机
示例:构建2个虚拟Web站点
www.benet.com 14.0.0.40:80
www.benet.com 14.0.0.40:8080
1.在上个基于域名的虚拟主机的实验基础上修改配置文件
[root@service logs]# vim /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80> ##虚拟主机使用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@service named]# vim /etc/httpd/conf/httpd.conf
......省略内容
Listen 14.0.0.40:80
Listen 14.0.0.40:8080
#Listen 80
......省略内容
3.为不同端口的网站创建各自的首页(www.benet.com刚才已经创建过了)
[root@service logs]# cd /var/www/html/
[root@service logs]# mkdir benet02
[root@service benet02]# vim index.html
<h1>this is benet02</h1>
4.重新启动服务并进行验证
基于IP的虚拟主机
示例:构建2个虚拟Web站点
www.test.com IP地址为14.0.0.40
www.test02.com IP地址为14.0.0.66
实现在浏览器中访问这两个IP时,分别显示不同的内容
1.添加一张网卡,配置IP地址为14.0.0.66
2.在上个基于端口的虚拟主机的实验基础上修改配置文件
[root@service html]# vim /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 14.0.0.40:80>
DocumentRoot "/var/www/html/test"
ErrorLog "logs/www.test.com.error_log"
CustomLog "logs/www.test.com.access_log" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 14.0.0.66:80>
DocumentRoot "/var/www/html/test02"
ErrorLog "logs/www.test02.com.error_log"
CustomLog "logs/www.test02.com.access_log" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@service test02]# netstat -ntap | grep httpd
tcp 0 0 14.0.0.66:80 0.0.0.0:* LISTEN 11622/httpd
tcp 0 0 14.0.0.40:80 0.0.0.0:* LISTEN 11622/httpd
3.为14.0.0.66的网站创建自己的首页(14.0.0.40前面已经创建过了)
[root@service html]# ls
benet benet02 test test02
[root@service html]# cd test02/
[root@service test02]# vim index.html
<h1>this is test02</h1>
4.在主配置文件中配置监听两个站点的IP
[root@service test02]# vim /etc/httpd/conf/httpd.conf ##监听两个站点的IP地址
......省略内容
Listen 14.0.0.40:80
Listen 14.0.0.66:80
#Listen 80
......省略内容
5.重新启动服务并进行验证