Centos7.6下构建虚拟主机实验(基于域名、端口及IP地址)

一、构建虚拟主机概述

  • 虚拟Web主机

在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的主机

  • http支持的虚拟主机类型
  1. 基于域名的虚拟主机
  2. 基于IP地址的虚拟主机
  3. 基于端口的虚拟主机

二、实验环境及详细步骤

  • 实验环境

VMware Workstation 15.5、Centos 7.6、windows10专业工作站版、XShell 6

  • 实验前准备
  1. 新建一台win10虚拟机并配置IP(192.168.50.140)
  2. 新建一台centos7.6虚拟机,配置双网卡(ens33、ens36),IP分别为192.168.50.134、192.168.50.135,并在其中安装DNS与http服务,测试win10机与这两个IP的连通性

2.1 基于域名

  • 需求:构建2个虚拟Web站点,IP地址均为192.168.50.134,在浏览器中访问两个不同的域名时分别显示不同内容

1、安装http与DNS服务

[root@localhost ~]# yum -y install httpd bind

2、修改DNS主配置文件

[root@localhost ~]# vi /etc/named.conf 

将两处红框部分修改为any

aDT3in.md.png
3、修改DNS区域数据配置文件

[root@localhost ~]#vi /etc/named.rfc1912.zones

修改为以下内容:
zone "test.com" IN {            ## test.com为域名
        type master;
        file "test.com.zone";     ##test.com.zone为区域数据配置文件名(可以自行定义)
        allow-update { none; };
};

zone "test1.com" IN {
        type master;
        file "test1.com.zone";
        allow-update { none; };
};

aDTMZQ.png
4、进入dns配置目录修改区域数据配置文件

[root@localhost ~]# cd /var/named/        ## 进入目录
[root@localhost named]# cp -p named.localhost test.com.zone    ## 将区域数据配置文件模板拷贝
[root@localhost named]# vim test.com.zone     ## 编辑区域数据配置文件(需要修改的内容参考下图)
[root@localhost named]# cp -p test.com.zone test1.com.zone   ## 将编辑好的配置文件再改名复制一份(因为有两个域名需要域名解析)

aDTQaj.png

5、启动DNS服务

[root@localhost named]# systemctl start named

6、将win10机上的DNS项设置为DNS服务器的地址
aDTlIs.png

7、关闭防火墙及系统核心防护功能

[root@localhost named]# iptables -F
[root@localhost named]# setenforce 0

8、在win10机上打开“命令提示符”,使用命令查看域名解析是否生效

nslookup www.test.com
nslookup www.test1.com

aDTuqg.md.png
9、进入http服务目录

[root@localhost named]# cd /etc/httpd/conf
[root@localhost conf]# cd extra/
[root@localhost extra]# vim host.conf

写入如下配置文件:
<VirtualHost *:80>
   DocumentRoot "/var/www/html/test"
   ServerName www.test.com
   ErrorLog "logs/www.test.com.error_log"
   CustomLog "logs/www.test.com.access_log" common
   <Directory "/var/www/html">
     Require all granted
   </Directory>
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/var/www/html/test1"
   ServerName www.test1.com
   ErrorLog "logs/www.test1.com.error_log"
   CustomLog "logs/www.test1.com.access_log" common
   <Directory "/var/www/html">
     Require all granted
   </Directory>
</VirtualHost>

10、因为host.conf是我们自己创建的一个配置文件,服务并不能直接读取到该文件,要使让httpd.conf在运行时读取该配置文件,所以要对http服务配置文件进行修改

[root@localhost extra]# vim /etc/httpd/conf/httpd.conf     ## 编辑http配置文件
在末行添加如下内容:
Include conf/extra/host.conf

11、给test与test1两个web创建页面

[root@localhost extra]# cd /var/www/html/     ## 进入站点目录
[root@localhost html]# mkdir test test1       ## 创建两个站点目录test、test1
[root@localhost html]# cd test                ## 进入test的站点目录
[root@localhost test]# vim index.html         ## 创建一个默认首页
添加如下内容:
<h1>Test Web</h1>
[root@localhost test]# cd ..                  ## 回到上一层目录
[root@localhost html]# cd test1/              ## 进入test1的站点目录
[root@localhost test1]# vim index.html        ## 创建一个默认首页
添加如下内容:
<h1>Test1 Web</h1>

12、启动http访问

[root@localhost extra]# systemctl start httpd

13、在win10机的浏览器上分别使用域名访问,查看能否进入访问站点
aDT8Gq.png
aDTGR0.png

实验成功!

2.2 基于端口

  • 需求:构建2个虚拟Web站点,使用同一IP地址192.168.50.134,在访问www.test.com时使用80端口,访问www.test1.com时使用8080端口

1、修改虚拟主机配置文件

[root@localhost extra]# vim /etc/httpd/conf/extra/host.conf    ## 进入配置文件

复制第二段的9行代码并粘贴到下方,将所有test1改为test2,除了ServerName,因为我们要实现基于端口区分网站:
<VirtualHost *:8080>
   DocumentRoot "/var/www/html/test2"
   ServerName www.test1.com
   ErrorLog "logs/www.test2.com.error_log"
   CustomLog "logs/www.test2.com.access_log" common
   <Directory "/var/www/html">
     Require all granted
   </Directory>
</VirtualHost>

aDTtMT.png

2、创建test2站点的首页文件

[root@localhost extra]# mkdir /var/www/html/test2      ## 创建test2站点目录
[root@localhost extra]# vim /var/www/html/test2/index.html    ## 创建站点首页文件
下入如下内容:
<h1>Test2 Web</h1>

3、修改http服务主配置文件,添加监听端口8080

[root@localhost extra]# vi /etc/httpd/conf/httpd.conf      ## 编辑配置文件

找到Listen所在IP地址与端口的对应行,修改为如下内容:
Listen 192.168.50.134:80
Listen 192.168.50.134:8080
#Listen 80

aDTJzV.png

4、重启http服务

[root@localhost extra]# systemctl restart httpd.service 

5、在win10机的浏览器上清空所有缓存及浏览记录,并重启浏览器
aDT0o9.png

分别访问www.test1.com与www.test1.com:8080,查看结果:
aDTNsU.png
aDTULF.png

实验成功!实现了同一域名的不同端口访问不同站点

2.3 基于IP

  • 需求:构建2个虚拟Web站点,使用不同IP分别为192.168.50.134、192.168.50.135,要求在浏览器中访问这两个IP时,分别显示不同内容

1、编辑并修改虚拟主机配置文件

[root@localhost extra]# vim /etc/httpd/conf/extra/host.conf    ## 编辑配置文件
在末行模式下输入:set nu显示行号
再输入:11,29 s/^/#/g将11-29行前面全部加上注释
光标回到第一行,在键盘上按9yy,复制含当前行在内的9行内容,将光标移动到第10行,按p键粘贴即可

PS:以上都是VIM编辑器的快捷操作命令,如果大家还不熟悉编辑器操作的话可以先学习编辑器操作

将80前面的*号改为虚拟机两块网卡的IP地址,并将域名ServerName一行删去,修改日志文件及站点目录,配置文件如下:
<VirtualHost 192.168.50.134:80>
   DocumentRoot "/var/www/html/test"
   ErrorLog "logs/www.test.com.error_log"
   CustomLog "logs/www.test.com.access_log" common
   <Directory "/var/www/html">
     Require all granted
   </Directory>
</VirtualHost>
 
<VirtualHost 192.168.50.135:80>
   DocumentRoot "/var/www/html/test1"
   ErrorLog "logs/www.test1.com.error_log"
   CustomLog "logs/www.test1.com.access_log" common
   <Directory "/var/www/html">
     Require all granted
   </Directory>
</VirtualHost>

aDTwdJ.png

2、修改http服务主配置文件,将监听IP分别修改为虚拟机网卡的两个IP

[root@localhost extra]# vim /etc/httpd/conf/httpd.conf   ## 修改配置文件

aDTdZ4.png

3、重启http服务

[root@localhost extra]# systemctl restart httpd

4、在win’10虚拟机上分别访问两个IP(注意!在访问之前一定要清除缓存!)
aDTDiR.png
aDTrJ1.png

实验成功!实现了基于不同IP访问不同网站

猜你喜欢

转载自blog.csdn.net/u014042047/article/details/107805323