虚拟Web主机简介
允许在同一台物理服务器上托管多个独立的网站。每个网站都可以有自己独立的域名、内容、和配置,就像独立的服务器一样。这种技术非常适合中小型网站,因为它可以降低成本、节约资源,同时简化管理。
httpd虚拟主机包含以下三大类
基于域名:
通过域名来区分不同的网站。服务器会根据HTTP请求头中的Host字段来决定响应哪个网站内容。这种方式适合在同一个IP地址上托管多个网站,便于管理和节省IP资源。
基于IP地址:
通过不同的IP地址来区分网站。每个站点分配独立的IP地址,服务器根据请求的IP地址来选择对应的网站。这种方式适用于对IP地址有特定要求的场景。
基于端口:
通过不同的端口号来区分网站。例如,可以将xie.com:80
和xie.com:8080
指向不同的网站内容。尽管这种方式不常见,但在一些特定应用中可能有用。
搭建以上三种虚拟主机步骤:
基于域名:
首先需要搭建DNS服务,以便于提供域名解析。
搭建dns服务:
#安装dns服务
yum -y install bind*
#对配置文件进行备份
cp /etc/named.conf /etc/named.conf.bak
#修改配置文件
vim /etc/named.conf
#备份dns的区域配置文件
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
#修改区域配置文件,往这个配置文件内插入两块配置文件
vim /etc/named.rfc1912.zones
zone "benet.com" IN {
type master;
file "benet.com.zone";
};
zone "accp.com" IN {
type master;
file "accp.com.zone";
};
........
以下该创建的文件名称要与上面区域配置文件指定的名称相同,否则无法解析
#修改区域主配置文件
touch /var/named/benet.com.zone
vim /var/named/benet.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS www.benet.com.
www IN A 192.168.42.130
touch /var/named/accp.com.zone
vim /var/named/accp.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS www.accp.com.
www IN A 192.168.42.130
#配置服务端网卡,ip地址需要设置为静态,dns地址指向为本地
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#启动dns服务
systemctl start named && systemctl enable named
安装httpd服务:
#安装httpd服务
yum -y install httpd
为虚拟主机准备网页文档
#新建网页文档存放点
mkdir -p /var/www/html/one
mkdir -p /var/www/html/two
#插入网页内容
echo "<h1>www.benet.com</h1>" > /var/www/html/one/index.html
echo "<h1>www.accp.com</h1>" > /var/www/html/two/index.html
添加虚拟主机配置,如果以上域名有做修改那么下面的配置文件中的域名也要做出相对应的改动
vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@benet.com
DocumentRoot "/var/www/html/one"
ServerName www.benet.com
ServerAlias www.dummy-host.example.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 *:80>
ServerAdmin webmaster@accp.com
DocumentRoot "/var/www/html/two"
ServerName www.accp.com
ServerAlias www.dummy1-host.example.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>
#开启httpd服务 并进行测试
systemctl start httpd && systemctl enable httpd
测试:
基于ip地址:
修改网卡配置文件:
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
重新加载网卡配置
ifdown ens33:0;ifup ens33:0
安装httpd服务:
yum -y install httpd
为虚拟主机准备网页文档
#新建网页文档存放点
mkdir -p /var/www/html/one
mkdir -p /var/www/html/two
#插入网页内容
echo "<h1>www.a.com</h1>" > /var/www/html/one/index.html
echo "<h1>www.b.com</h1>" > /var/www/html/two/index.html
添加虚拟主机配置
vim /etc/httpd/conf.d/httpd-vhosts.conf
#开启httpd服务 并进行测试
systemctl start httpd && systemctl enable httpd
测试:
基于端口:
安装httpd服务:
yum -y install httpd
为虚拟主机准备网页文档
#新建网页文档存放点
mkdir -p /var/www/html/one
mkdir -p /var/www/html/two
#插入网页内容
echo "<h1>www.benet.com</h1>" > /var/www/html/one/index.html
echo "<h1>www.accp.com</h1>" > /var/www/html/two/index.html
添加虚拟主机配置
vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@benet.com
DocumentRoot "/var/www/html/one"
ServerName www.benet.com
ServerAlias www.dummy-host.example.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>
ServerAdmin webmaster@accp.com
DocumentRoot "/var/www/html/two"
ServerName www.accp.com
ServerAlias www.dummy1-host.example.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>
Listen 8080
#开启httpd服务 并进行测试
systemctl start httpd && systemctl enable httpd