构建虚拟Web主机——基于域名、端口、IP

构建虚拟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

#现在我们来进行域名验证

在这里插入图片描述
在这里插入图片描述

发布了72 篇原创文章 · 获赞 44 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ML908/article/details/103524228
今日推荐