构建虚拟web主机
虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中的每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。
httpd 支持的虚拟主机类型包括以下三种。
●基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。例如,www.kkun.com 和 www.qkun.com 站点的 IP 地址都是 20.0.0.3。这是使用最为普遍的虚拟 Web 主机类型。
●基于 IP 地址:为每个虚拟主机使用不同的域名,且各自对应的 IP 地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。
●基于端口:这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用了不同的TCP 端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问
一.基于域名
在试验环境中DNS需要修改下A记录,在本案中我们采用hosts映射的方式做域名解析
●为虚拟主机准备网页文档
[root@www ~]# mkdir -p /opt/www/html/kkun.com
[root@www ~]# mkdir -p /opt/www/html/qkun.com
[root@www ~]# echo "<h1>www.kkun.com</h1>" > /opt/www/html/kkun.com/index.html
[root@www ~]# echo "<h1>www.qkun.com</h1>" > /opt/www/html/qkun/index.html
●添加虚拟主机配置
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@kkun.com
DocumentRoot "/opt/www/html/kkun.com"
ServerName www.kkun.com
ErrorLog "logs/www.kkun.com.error_log"
CustomLog "logs/www.kkun.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@qkun.com
DocumentRoot "/opt/www/html/qkun.com"
ServerName www.qkun.com
ErrorLog "logs/www.qkun.com.error_log"
CustomLog "logs/www.qkun.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf
[root@www ~]# systemctl restart httpd
●验证
登录客户机访问www.kkun.com 在访问www.qkun.com
2.基于IP
主机上有2块网卡
VM1网卡:20.0.0.3
VM1网卡:20.0.0.6
添加另外一块网卡VM1,配置ens37网卡
[root@server ~]# nmcli connection
名称 UUID 类型 设备
ens33 832211d4-7a78-4e78-a3dc-13ef1c907c20 802-3-ethernet ens33
virbr0 67e356e7-9de0-49c1-a1eb-ccef5ae14659 bridge virbr0
有线连接 1 ea882700-fed6-4fb4-b37d-28c26509cdcf 802-3-ethernet ens37
[root@localhost kkun.com]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# vi ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=20.0.0.6
NETMASK=255.255.255.0
GATEWAY=20.0.0.2
DNS=8.8.8.8
DEFROUT=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
UUID=ea882700-fed6-4fb4-b37d-28c26509cdcf
DEVICE=ens37
ONBOOT=yes
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifdown ens37
[root@localhost network-scripts]# ifup ens37
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 20.0.0.3:80> ####设置 kkun.com 虚拟站点区域
DocumentRoot "/opt/www/html/kkun.com"
ServerName www.kkun.com
......
</VirtualHost>
<VirtualHost 20.0.0.6:80> ####设置 qkun.com 虚拟站点区域
DocumentRoot "/opt/www/html/qkun.com"
ServerName www.qkun.com
......
</VirtualHost>
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf ####加载独立的配置文件
[root@www ~]# systemctl restart httpd ####重启服务使新配置生效
####验证####
更改客户机hosts映射关系
20.0.0.3 www.kkun.com
20.0.0.6 www.qkun.com
登录客户机访问20.0.0.3 在访问20.0.0.6
3.基于端口
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 20.0.0.3:80> ####设置 kkun.com 虚拟站点区域
DocumentRoot "/opt/www/html/kkun.com"
ServerName www.kkun.com
</VirtualHost>
<VirtualHost 20.0.0.6:8080> ####设置 qkun.com 虚拟站点区域
DocumentRoot "/opt/www/html/qkun.com"
ServerName www.qkun.com
</VirtualHost>
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf ####省略部分内容
Include conf/extra/httpd-vhosts.conf ####加载独立的配置文件
Listen 20.0.0.3:80 ####监听 80 端口
Listen 20.0.0.6:8080 ####监听 8080 端口
[root@www ~]# systemctl restart httpd ####重启服务使新配置生效
####验证####
更改客户机hosts映射关系
20.0.0.3 www.kkun.com
20.0.0.6 www.qkun.com
登录客户机访问20.0.0.3:80 在访问20.0.0.6:8080