一、虚拟主机概述
1.1 虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
1.2 httpd支持的虚拟主机类型
- 基于域名的虚拟主机
为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。 - 基于IP地址的虚拟主机
为每个虚拟主机使用不同的域名,且各自对应的ip地址也不相同。这种方式需要为服务器配置多个网络接口(网卡),因此应用并不是很广泛。 - 基于端口的虚拟主机
这种方法并不使用域名、IP地址来区分不同的站点内容,而是使用不同的TCP端口号,因此用户在浏览不同的虚拟站点时要同时指定端口号才能访问。
二、搭建虚拟主机
1、基于域名的虚拟主机
实验环境:两个虚拟主机域名为:www.kgc.com,www.benet.com;使用一台httpd服务器搭建;ip地址为192.168.200.110
实验步骤:
[root@promote ~]# iptables -F //关闭防火墙
[root@promote ~]# setenforce 0
[root@promote ~]# yum -y install bind httpd //安装named和Apache服务
[root@promote ~]# vim /etc/named.conf //修改named服务主配置
options {
listen-on port 53 { any; };
allow-query { any; };
[root@promote ~]# vim /etc/named.rfc1912.zones //named区域配置文件
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@promote ~]# cd /var/named/
[root@promote named]# cp -p named.localhost kgc.com.zone
[root@promote named]# vim kgc.com.zone //kgc.com区域配置文件
$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.200.110
[root@promote named]# cp -p kgc.com.zone benet.com.zone //benet.com区域配置文件 由于IP地址一样所以不做修改
[root@promote named]# systemctl start named //启动named服务
修改虚拟机win10 DNS地址为192.168.200.140
[root@localhost httpd]# cd conf
[root@localhost conf]# mkdir extra
[root@localhost conf]# cd extra/
[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 *: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>
[root@localhost extra]# cd /var/www/html/
[root@localhost html]# mkdir kgc benet
[root@localhost html]# cd kgc/
[root@localhost kgc]# vim index.html
<h1>this is kgc web</h1>
[root@localhost kgc]# cd ..
[root@localhost html]# cd benet/
[root@localhost benet]# vim index.html
<h1>this is benet web</h1>
[root@localhost benet]# vim /etc/httpd/conf/httpd.conf //加载独立的配置文件
Include conf/extra/vhost.conf
[root@localhost extra]# systemctl restart httpd
win10访问
www.kgc.com
www.benet.com
2、基于端口的虚拟主机
[root@localhost 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>
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>
[root@localhost extra]# mkdir /var/www/html/benet02
[root@localhost extra]# vim /var/www/html/benet02/index.html
<h1>this is benet02 web</h1>
[root@localhost extra]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.200.140:80
Listen 192.168.200.140:8080
#Listen 80
[root@localhost extra]# systemctl restart httpd
[root@localhost extra]# netstat -antp | grep httpd
tcp 0 0 192.168.200.140:8080 0.0.0.0:* LISTEN 69462/httpd
tcp 0 0 192.168.200.140:80 0.0.0.0:* LISTEN 69462/httpd
win10浏览网页 www.benet.com:8080/ www.benet.com
3、基于IP的虚拟主机
[root@localhost extra]# vim vhost.conf
:set nu
:11,29 s/^/#/g //注释掉前面的操作
<VirtualHost 192.168.200.140: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 192.168.200.180:80>
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 extra]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.200.180
GATEWAY=192.168.200.2
DNS1=8.8.8.8
NETMASK=255.255.255.0
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# mkdir /var/www/html/kgc02
[root@localhost network-scripts]# vim /var/www/html/kgc02/index.html
<h1>this is kgc02 web</h1>
[root@localhost network-scripts]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.200.140:80
Listen 192.168.200.180:80
#Listen 80
[root@localhost network-scripts]# systemctl restart httpd
浏览器访问
192.168.200.180
192.168.200.140