apache服务构建虚拟web主机

一、虚拟web主机的类型

1、虚拟 Web 主机介绍

虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中每一个站点实际 上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可 以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用 httpd 服务可以非常方便地构建虚拟主机服务器,只需要运行一个 httpd 服务 就能够同时支撑大量的 Web 站点。

2、apache服务支持的三种虚拟web主机类型

2.1、基于域名的类型

基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。这是使用最为普遍的虚拟 Web 主机类型

2.2、基于IP地址的类型

基于 IP 地址:为每个虚拟主机使用不同的域名,且各自对应的 IP 地址也不相同。 这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。

2.3、基于端口的类型

基于端口:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的 TCP 端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

:因为不同类型的虚拟主机其区分机制各不相同,建议不要同时使用,以免相互混淆。

二、构建基于域名的虚拟web主机

1、提供域名解析

首先需要向 DNS 服务提供商注册各虚拟 Web 站点的域名,以便当访问其中任何一 个虚拟 Web 站点时,最终访问的都是同一个 IP 地址——实际支撑所有虚拟 Web 站点 的服务器的 IP 地址。

假设我们有两个域名www.wlm.com、www.wat.com。对用应的IP地址为20.0.0.58。我们可以将两个域名作为apache服务的两个虚拟的web站点同时对应一个IP地址20.0.0.58。

2、准备网页文档

为每个虚拟 Web 主机准备网站目录及网页文档。分别为每个虚拟 Web 主机提供包含不同内容的首页文件。

[root@localhost ~]# mkdir -p /var/www/html/wlmcom
[root@localhost ~]# mkdir -p /var/www/html/watcom
[root@localhost opt]# echo "<h1>www.wlm  web1</h1>" > /var/www/html/wlm/index.html
[root@localhost opt]# echo "<h1>www.wat  web2</h1>" > /var/www/html/wat/index.html
3、更改配置文件

在 apache服务的主配置文件中,若要启用基于域名的虚拟 Web 主机,通常需要更改以下两个区域

  • 虚拟主机区域配置:使用<VirtualHost 监听地址>……区域配置,为每一 个虚拟 Web 主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网 页根目录的配置项;其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。

  • 访问网页根目录的权限配置:使用<Directory 目录位置>……区域配置,为每一个虚拟 Web 主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置。 当虚拟 Web 主机的数量较多时,建议使用独立的虚拟主机配置文件。

[root@localhost opt]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
.......                  //省略部分信息
  //可在此位置手动创建独立的访问目录权限                            
<VirtualHost *:80>           //设置域名 www.wlm.com 虚拟站点区域
    DocumentRoot "/var/www/html/wlm"    //服务访问域名网页的路径
    ServerName www.wlm.com      //服务访问的域名
    ErrorLog "logs/www.wlm.com.error_log"      //错误访问日志存放路径
    CustomLog "logs/www.wel.com.access_log" common      //访问日志存放路径
        <Directory "/var/www/html">        //设置目录访问权限
        Require all granted              //允许所有访问
        </Directory>
</VirtualHost>

<VirtualHost *:80>    //设置域名 www.wlm.com 虚拟站点区域。
    DocumentRoot "/var/www/html/wat"    //服务访问域名网页的路径
    ServerName www.wat.com    //服务访问的域名
    ErrorLog "logs/www.wat.com.error_log"     //错误访问日志存放路径
    CustomLog "logs/www.wat.com.access_log" common   //访问日志存放路径
        <Directory "/var/www/html">     //设置目录访问权限
        Require all granted   //允许所有访问
        </Directory>
</VirtualHost>

然后在 httpd.conf 文件中通过开启 “Include conf/extra/httpd-vhosts.conf”加载这些配置。这样可以将对 httpd.conf 文件的改动减至最少,更方便配置内容的维护。

[root@localhost opt]# vim /usr/local/httpd/conf/httpd.conf 
.......                  //省略部分信息
Include conf/extra/httpd-vhosts.conf //加载独立的配置文件,将行首的 "#" 删除
.......                  //省略部分信息
[root@localhost opt]# systemctl restart httpd   //重启httpd服务
4、客户机访问虚拟的web主机

首先,在客户机的hosts文件中加入dns域名的映射,再在客户机的浏览器中,使用网站名称分别访问不同的域名,能够看到之前设定的网页内容,此时表示基于域名的虚拟主机配置成功。若无法看到此结果,则需要检查两个站点的首页文件,根据上述过程排查配置错误,必要时清空浏览器缓存后重新访问。

Linux的hosts文件路径为:/etc/hosts  
20.0.0.58    www.wlm.com      //添加内容
20.0.0.58    www.wat.com
window的hosts文件路径为:C:\Windows\System32\drivers\etc\hosts
20.0.0.58    www.wlm.com         //添加内容
20.0.0.58    www.wat.com

测试结果显示:
域名为www.wlm.com的测试页
在这里插入图片描述
域名为www.wat.com的测试页
在这里插入图片描述

三、构建基于IP地址的虚拟web主机

构建基于 IP 地址或基于端口的虚拟主机的过程与基于域名的虚拟主机类似,也需要先提供域名解析、准备网页文档,再调整 httpd 配置、重启 httpd 服务,然后在客户 机中访问虚拟主机进行测试。其中最主要的区别是,不同类型的虚拟主机在 httpd.conf 文件中的配置内容略有不同。

对于基于 IP 地址的虚拟主机,每个虚拟 Web 主机各自使用不同的 IP 地址,但是 都通过同一台 httpd 服务器对外提供 Web 浏览服务。正因为如此,用来支撑这些虚拟 Web 主机的服务器也就需要有大量的网络接口,这在实际应用中往往不太方便,所以 基于 IP 地址的虚拟主机并不像基于域名虚拟主机那样应用广泛。

更改httpd.conf文件配置

[root@localhost opt]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
.......                  //省略部分信息
  //可在此位置手动创建独立的访问目录权限                            
<VirtualHost 20.0.0.58>           //基于20.0.0.58IP的虚拟web主机配置
    DocumentRoot "/var/www/html/wlm"    //服务访问域名网页的路径
    ServerName www.wlm.com      //服务访问的域名
    ErrorLog "logs/www.wlm.com.error_log"      //错误访问日志存放路径
    CustomLog "logs/www.wel.com.access_log" common      //访问日志存放路径
        <Directory "/var/www/html">        //设置目录访问权限
        Require all granted              //允许所有访问
        </Directory>
</VirtualHost>

<VirtualHost 20.0.0.55>    //基于20.0.0.55的虚拟web主机的配置
    DocumentRoot "/var/www/html/wat"    //服务访问域名网页的路径
    ServerName www.wat.com    //服务访问的域名
    ErrorLog "logs/www.wat.com.error_log"     //错误访问日志存放路径
    CustomLog "logs/www.wat.com.access_log" common   //访问日志存放路径
        <Directory "/var/www/html">     //设置目录访问权限
        Require all granted   //允许所有访问
        </Directory>
</VirtualHost>
[root@localhost opt]# vim /usr/local/httpd/conf/httpd.conf 
.......                  //省略部分信息
Include conf/extra/httpd-vhosts.conf //加载独立的配置文件,将行首的 "#" 删除
.......                  //省略部分信息
[root@localhost opt]# systemctl restart httpd   //重启httpd服务

基于IP20.0.0.58的虚拟web主机
在这里插入图片描述
基于20.0.0.50的虚拟web主机
在这里插入图片描述

四、构建基于端口的虚拟web主机

基于端口的虚拟主机通常只用于同一个 Web 站点,其针对的网站名称、IP 地址往 往是相同的,但通过不同的 TCP 端口来提供访问不同网页内容的服务入口。在浏览器 中访问非 80 端口的 Web 服务器时,需要明确指出服务器的端口号,如访问 http://www.wat.com:55/或http://20.0.0.58.55/。

[root@localhost opt]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
<VirtualHost 20.0.0.58:80>    //基于80端口的虚拟web主机配置
    DocumentRoot "/var/www/html/wlm"
    ServerName www.wlm.com
    ErrorLog "logs/www.wlm.com.error_log"
    CustomLog "logs/www.wel.com.access_log" common
        <Directory "/var/www/html">
        Require all granted
        </Directory>
</VirtualHost>

<VirtualHost 20.0.0.58:55>   //基于55端口的web主机配置
    DocumentRoot "/var/www/html/wat"
    ServerName www.wat.com
    ErrorLog "logs/www.wat.com.error_log"
    CustomLog "logs/www.wat.com.access_log" common
        <Directory "/var/www/html">
        Require all granted
        </Directory>
</VirtualHost>

配置基于端口的虚拟 Web 主机时,要通过多个 Listen 配置项来指定要监听的 TCP 端口号,需要更改httpd.conf配置文件。

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf   //编辑配置文件
// 使用vim编辑器末行模式/搜索Listen 80服务器默认监听的端口,在其下一行添加配置
.......                  //省略部分信息
Listen 80
Listen 55     //添加监听55端口
.......                  //省略部分信息
Include conf/extra/httpd-vhosts.conf //加载独立的配置文件,将行首的 "#" 删除
.......                  //省略部分信息
[root@localhost opt]# systemctl restart httpd   //重启httpd服务

访问基于80端口的web虚拟机
在这里插入图片描述

访问基于55端口的web虚拟机
在这里插入图片描述
注:个人建议生产环境用基于域名的虚拟web主机

猜你喜欢

转载自blog.csdn.net/wulimingde/article/details/108431078