在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机 通过虚拟web主机可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本 使用httpd可以非常方便的构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点
基于域名 为每个虚拟主机使用不同的域名,但是其对应的IP地址使相同的 域名不同–IP相同,端口相同 基于域名是最为普遍的虚拟web主机类型 基于IP地址 为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同 这种方式需要为服务器配备多个网络接口,因此应用不是很广泛 IP不同,端口相同 基于端口 这种方式并不使用域名,IP地址来区分不同的站点内容,而是使用不同的TCP端口号 因此用户在浏览不同的虚拟站点时需要同时制定端口号才能访问 IP相同,端口不同
[root@localhost ~]# vim /etc/http/conf/xxx/vhost.conf
1 <VirtualHost *:80> '//针对本服务器所有IP地址'
2 DocumentRoot "/var/www/html/xxx" '//指定站点目录'
3 ServerName www.xxx.com '//指定域名'
4 Errorlog "logs/www.xxx.com.error_log" '//指定错误日志路径'
5 Customlog "logs/www.xxx.com.custom_log" common '//指定访问日志路径'
6 <Directory> "/var/www/html">
7 Require all granted '//设置网页允许所有主机访问,也可以通过denied设置拒绝访问'
8 </Directory>
9 </VirtualHost>
生产环境中,服务器不止两台
每台服务器都有虚拟主机对应各自的网站
通过调度服务器调取服务器中的网站资源
VMware软件
一台Windows虚拟机,IP地址为192.168.110.3
一台centos7虚拟机,IP地址为192.168.110.132
centos7安装bind和httpd服务
实验目的 在Windows虚拟机浏览器中访问这两个域名时,分别显示不同的内容
[root@localhost ~]# yum install bind httpd -y
关闭防火墙,核心防护,编辑主配置文件
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/named.conf
...省略内容
options {
listen-on port 53 { any; }; '//修改为any'
listen-on-v6 port 53 { ::1; };
...省略内容
allow-query { any; }; '//修改为any'
...省略内容
编辑区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
'//添加一下两端内容'
...省略内容
zone "shang.com" IN {
type master;
file "shang.com.zone";
allow-update { none; };
};
zone "zhen.com" IN {
type master;
file "zhen.com.zone";
allow-update { none; };
};
...省略内容
编辑区域数据文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost shang.com.zone
[root@localhost named]# vim shang.com.zone
...省略内容
'//末尾添加内容'
www IN A 192.168.110.132
[root@localhost named]# cp -p shang.com.zone zhen.com.zone
开启DNS域名服务
[root@localhost named]# systemctl start named
创建站点,并添加虚拟主机配置
[root@localhost named]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf magic
[root@localhost conf]# mkdir qwer
[root@localhost conf]# ls
qwer httpd.conf magic
[root@localhost conf]# cd qwer
[root@localhost baobao]# ls
[root@localhost baobao]# vim vhost.conf
1 <VirtualHost *:80>
2 DocumentRoot "/var/www/html/shang"
3 ServerName www.shang.com
4 Errorlog "logs/www.shang.com.error_log"
5 Customlog "logs/www.shang.com.custom_log" common
6 <Directory> "/var/www/html">
7 Require all granted
8 </Directory>
9 </VirtualHost>
10
11 <VirtualHost *:80>
12 DocumentRoot "/var/www/html/zhen"
13 ServerName www.zhen.com
14 Errorlog "logs/www.zhen.com.error_log"
15 Customlog "logs/www.zhen.com.custom_log" common
16 <Directory> "/var/www/html">
17 Require all granted
18 </Directory>
19 </VirtualHost>
编辑虚拟机网页文档
[root@localhost baobao]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# mkdir shang zhen
[root@localhost html]# ls
shang zhen
[root@localhost html]# cd shang
[root@localhost html]# vim index.html
<h1>this is shang web</h1>
同理 zhen的网页是<h1>this is zhen web</h1>
编辑httpd主配置文件,添加虚拟主机站点
[root@localhost html]# vim /etc/httpd/conf/httpd.conf
'//找到此行'
IncludeOptional conf.d/*.conf
Include conf/qwer/vhost.conf '//添加此行内容'
开启httpd服务,并测试 [root@localhost html]# systemctl start httpd
实例目的 在浏览器中访问不同端口,显示不同内容
配置虚拟主机配置
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# systemctl start httpd
[root@localhost html]# cd /etc/httpd/conf
[root@localhost conf]# ls
qwer httpd.conf magic
[root@localhost conf]# cd qwer
[root@localhost baobao]# ls
vhost.conf
[root@localhost baobao]# vim vhost.conf
'//在第二个主机配置后添加80'
<VirtualHost *:8080> '//多写一个80'
[root@localhost baobao]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.197.141:80
Listen 192.168.197.141:8080 '//找到监听地址,开启IPv4监听,设置监听地址,添加一个8080端口的监听地址'
#Listen 80 '//关闭IPv6监听'
[root@localhost baobao]# systemctl restart httpd.service
继承以上实验环境 centos虚拟主机新添加一张网卡 编辑另一个网卡为192.168.110.200
在浏览器访问两个IP时,分别显示不同的内容
虚拟主机配置
[root@localhost sahng]# vim vhost.conf
<VirtualHost 192.168.110.132:80> '//将*修改为第一张网卡IP地址'
<VirtualHost 192.168.110.200:80> '//将*修改为第二张网卡IP地址'
'//将他们的域名都注释掉'
设置监听地址
[root@localhost shang]# vim /etc/httpd/conf/httpd.conf
...省略内容
Listen 192.168.110.132:80
Listen 192.168.110.200:80
#Listen 80
...省略内容
重启服务,验证
[root@localhost shang]# systemctl restart httpd