构建虚拟Web主机
虚拟Web主机
- 在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
httpd支持的虚拟主机类型*
-
基于域名的虚拟主机
-
为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。例如www.kgc.com
和www.accp.com两个站点的IP都是192.168.17.130.这是使用最为普遍的虚拟web主机类型
-
-
基于IP地址的虚拟主机
- 为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛
-
基于端口的虚拟主机
- 这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。
应用示例
首先我们先基于不同域名构建虚拟主机
1、构建虚拟主机——基于域名
- 构建2个虚拟Web站点
- www.kgc.com,IP地址为192.168.17.130
- www.accp.com,IP地址为192.168.17.30
- 在浏览器中访问这两个域名时,分别显示不同的内容
构建过程
1、为虚拟主机提供域名解析dns
2、为虚拟主机准备网页文档
3、添加虚拟主机配置
4、在客户机访问虚拟Web主机
构建前,我们先安装相关软件包,关闭防火墙
[root@localhost ~]# yum -y install bind httpd
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
配置DNS域名解析
#更改dns主配置文件,将127.0.0.1和localhost 改为any
[root@localhost ~]# vim /etc/named.conf
…………省略
options {
listen-on port 53 { 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; };
…………省略
#更改dns区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
…………省略
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-update { none; };
};
zone "accp.com" IN {
type master;
file "accp.com.zone";
allow-update { none; };
};
…………省略
#配置dns区域数据配置文件,kgc.com.zone 和 accp.com.zone
[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 kgc.com.zone
[root@localhost named]# ls
data kgc.com.zone named.empty named.loopback
dynamic named.ca named.localhost slaves
[root@localhost named]# vim 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
AAAA ::1
www IN A 192.168.17.130 //添加本机地址作为解析地址
[root@localhost named]# cp -p kgc.com.zone accp.com.zone
[root@localhost named]# ls
accp.com.zone dynamic named.ca named.localhost slaves
data kgc.com.zone named.empty named.loopback
[root@localhost named]# systemctl start httpd //启动服务
[root@localhost named]# netstat -ntap | grep httpd
tcp6 0 0 :::80 :::* LISTEN 4812/httpd
在客户机测试,能否解析到两个域名
先为客户机指定dns服务器的地址192.168.220.131,不然直接解析会解析到公网地址
#验证域名解析,解析不同的域名得到的IP地址是相同的
现在我们开始构建虚拟主机——基于域名
#进入httpd,创建虚拟主机配置文件
[root@localhost named]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf magic
[root@localhost conf]# mkdir extra
[root@localhost conf]# cd extra/
[root@localhost extra]# ls
[root@localhost extra]# vim vhost.conf
<VirtualHost *:80> //* 表示本服务器所有ip均可以访问80端口
DocumentRoot "/var/www/html/kgc" //指定站点目录
ServerName www.kgc.com //指定域名
Errorlog "logs/www.kgc.com.error_log" //所悟日志指定路径
Customlog "logs/www.kgc.com.access_log" common //访问日志指定路径。common工具,固定格式,一定要加
<Directory "/var/www/html">
Require all granted //设置网页文件允许所有主机访问(黑白名单仅允许)
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/accp"
ServerName www.accp.com
Errorlog "logs/www.accp.com.error_log"
Customlog "logs/www.accp.com.access_log" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
#切换至指定的站点目录配置内容
[root@localhost extra]# cd /var/www/html
[root@localhost html]# mkdir kgc accp
[root@localhost html]# echo "hello! --kgc" > kgc/index.html //添加html文件
[root@localhost html]# echo "hello! --accp" > accp/index.html
#将虚拟主机配置文件添加到httpd主配置文件中末尾
[root@localhost html]# 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/vhost.conf //将虚拟主机配置文件添加到文件末尾
[root@localhost conf]# systemctl restart httpd //重启服务
#使用域名进行验证
2、构建虚拟主机——基于不同端口
-
以端口号作为区别(80/8080)
端口号放到主配置文件httpd.conf中,不是vhost
#进入虚拟主机配置文件,添加端口不同,域名相同的站点
[root@localhost extra]# vim vhost.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html/kgc"
ServerName www.kgc.com
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 *:8080>
DocumentRoot "/var/www/html/kgc02"
ServerName www.kgc.com
Errorlog "logs/www.kgc02.com.error_log"
Customlog "logs/www.kgc02.com.access_log" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@localhost html]# echo "hello! --kgc02" > kgc02/index.html //添加html文件
#更改httpd主配置文件,添加不同的监听地址
[root@localhost html]# vim /etc/httpd/conf/httpd.conf
…………省略
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
Listen 192.168.17.130:80
Listen 192.168.17.130:8080 //添加一条相同监听地址,端口为8080
#Listen 80
…………省略
[root@localhost html]# systemctl restart httpd //重启服务
#不同端口验证
3、构建虚拟Web主机——基于不同IP
首先添加网卡,用以实现不同IP的配置
配置dns解析,与上例雷同
#配置虚拟主机配置文件
[root@localhost html]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf magic
[root@localhost conf]# mkdir extra
[root@localhost conf]# cd extra/
[root@localhost extra]# vim vhost.conf
<VirtualHost 192.168.17.132:80>
DocumentRoot "/var/www/html/accp"
# ServerName www.accp.com
Errorlog "logs/www.accp.com.error_log"
Customlog "logs/www.accp.com.access_log" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.17.131:80>
DocumentRoot "/var/www/html/accp02"
# ServerName www.accp02.com
Errorlog "logs/www.accp02.com.error_log"
Customlog "logs/www.accp02.com.access_log" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
#添加html文件
[root@localhost extra]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# mkdir accp accp02
[root@localhost html]# echo "hello! --accp" > accp/index.html
[root@localhost html]# echo "hello! --accp02" > accp02/index.html
#进入主配置文件添加监听地址
[root@localhost accp02]# cd /etc/httpd/conf/
[root@localhost conf]# ls
extra httpd.conf magic
[root@localhost conf]# vim httpd.conf
…………省略
Listen 192.168.17.128:80
Listen 192.168.17.131:80
…………省略
[root@localhost conf]# systemctl restart httpd //重启服务
#验证使用不同IP访问站点 (这时不能通过域名访问,只能通过ip访问)
#添加域名解析
添加accp02区域配置文件
[root@localhost conf]# vim /etc/named.rfc1912.zones
……省略
zone "accp.com" IN {
type master;
file "accp.com.zone";
allow-update { none; };
};
zone "accp02.com" IN {
type master;
file "accp02.com.zone";
allow-update { none; };
};
……省略
添加appc02区域数据配置文件
[root@localhost conf]# cd /var/named/
[root@localhost named]# ls
accp.com.zone data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp accp.com.zone accp02.com.zone
[root@localhost named]# vim accp02.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
www IN A 192.168.17.131
#现在我们来进行域名验证