Apache配置虚拟主机的三种方法

微笑、不失礼 提交于 2020-01-28 04:45:26

前言:

虚拟主机是提供网站服务的集成环境,比如:linux Apache+php+mysq LAMP就是常说的建站开通的空间,所以Apache服务器只是虚拟主机的一种架构。

简单来说,Apache虚拟主机就是在一个Apache服务器上配置多个虚拟空间,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录。

一、虚拟主机概述

1.1 构建虚拟主机
  • 虚拟Web主机

在同一台服务器中允许多个Web站点,其中每个站点并不独立占用一台真正的计算机

  • httpd支持的虚拟主机类型

    基于域名的虚拟主机

    基于IP地址的虚拟主机

    基于端口的虚拟主机

二、实验

2.1 实验环境
  • 打开一台centos虚拟机

  • 安装bind、httpd软件

  • 关闭防火墙

2.2 基于域名构建虚拟主机

构建2个虚拟Web站点

  • www.ceshi.com ,地址为192.168.181.129(虚拟机ens33的地址)
  • www.ceshi2.com,地址为192.168.181.129(虚拟机ens33的地址)

实验目的:在浏览器中访问这两个域名时,分别显示不同的内容

2.2.1 配置DNS
  • 修改DNS主配置文件
[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };   ##将地址修改为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; };   ##同时允许所有主机访问
..............省略部分内容
-------》wq (保存)
  • 修改DNS区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "ceshi.com" IN {      
        type master;
        file "ceshi.com.zone";
        allow-update { none; };
};

zone "ceshi2.com" IN {
        type master;
        file "ceshi2.com.zone";
        allow-update { none; };
};
##添加dns区域数据配置文件指向的cd 位置
..........省略部分内容
  • 修改DNS区域数据配置文件
[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 ceshi.com.zone
## 复制区域数据配置文件,复制文件为在区域文件中指向的文件名
[root@localhost named]# ls
ceshi.com.zone  dynamic   named.empty      named.loopback
data            named.ca  named.localhost  slaves
[root@localhost named]# vim ceshi.com.zone 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.181.167   ##指向本机
##删除IPV6的解析,添加主机A记录
------》wq(保存)
[root@localhost named]# cp -p ceshi.com.zone ceshi2.com.zone
[root@localhost named]# ls
ceshi2.com.zone  data     named.ca     named.localhost  slaves
ceshi.com.zone   dynamic  named.empty  named.loopback
  • 开启服务、测试解析
[root@localhost named]# systemctl start named

使用一台win10或者宿主机进行测试
在这里插入图片描述

2.2.2 虚拟主机设置
  • 添加虚拟主机子配置文件
[root@localhost named]# cd /etc/httpd
[root@localhost httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir extra
[root@localhost conf]# ls
extra  httpd.conf  magic
[root@localhost conf]# cd extra/
[root@localhost extra]# vim vhost.conf
<VirtualHost *:80> 
  DocumentRoot "/var/www/html/ceshi/"    		 ##站点目录
  ServerName www.ceshi.com              		 ##域名
  Errorlog "logs/www.ceshi.com.error_log"    	 ##错误日志
  Customlog "logs/www.ceshi.com.access_log" common 	 ##访问日志 一定要加common(引用以下directory)
  <Directory "/var/www/html/">
    Require all granted                		  	 ##权限:允许所有用户访问
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/var/www/html/ceshi2/"           ##站点目录
  ServerName www.ceshi2.com						 ##域名
  Errorlog "logs/www.ceshi2.com.error_log" 		 ##错误日志 
  Customlog "logs/www.ceshi2.com.access_log" common	 ##访问日志 一定要加common(引用以下directory)
  <Directory "/var/www/html/">
    Require all granted 						 ##权限:允许所有用户访问
  </Directory>
</VirtualHost>
-------------》wq              

注意:错误日志与访问日志的路径指的是相对路径(相对于/httpd目录的路径)

  • 添加两个站点首页
[root@localhost extra]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# mkdir ceshi ceshi2
[root@localhost html]# ls
ceshi  ceshi2
[root@localhost html]# cd ceshi
[root@localhost ceshi]# ls
[root@localhost ceshi]# vim index.html
<h1>this is ceshi</h1>  ##编写ceshi的主页 
[root@localhost ceshi]# cd ..
[root@localhost html]# cd ceshi2
[root@localhost html]# vim index.html
<h1>this is ceshi2</h1>  ##编写ceshi2的主页
  • 在主配置文件中添加子配置文件的加载项
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# vim httpd.conf
##输入G到末行,添加引导项(导向子配置文件,此处路径也引用的是相对路径(相对httpd目录)
Include conf/extra/vhost.conf
--------》wq
  • 启动服务
[root@localhost httpd]# systemctl start httpd
2.2.3 使用win10虚拟机进行测试

输入www.ceshi.com:
在这里插入图片描述

输入www.ceshi2.com:
在这里插入图片描述

以上为基于不同域名的方式创建虚拟主机

2.3 基于端口构建虚拟主机
2.3.1 修改子配置文件

这里接着以上的配置进行修改

首先复制www.ceshi.com的配置,粘贴到尾行。

[root@localhost extra]# cd /etc/httpd/conf/extra/
[root@localhost extra]# vim vhost.conf 
<VirtualHost *:80>
  DocumentRoot "/var/www/html/ceshi/"
  ServerName www.ceshi.com
  Errorlog "logs/www.ceshi.com.error_log"
  Customlog "logs/www.ceshi.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:8080>  ##直接将端口改为8080
  DocumentRoot "/var/www/html/ceshi2/"
  ServerName www.ceshi2.com
  Errorlog "logs/www.ceshi2.com.error_log"
  Customlog "logs/www.ceshi2.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>

------>保存
2.3.2 创建ceshi3的站点
[root@localhost extra]# cd /var/www/html
[root@localhost html]# ls
ceshi  ceshi2
[root@localhost html]# mkdir ceshi3
[root@localhost html]# cd ceshi3
[root@localhost ceshi3]# vim ceshi3
<h1>this is ceshi3</h1>
##简单编写ceshi3的主页内容
2.3.3 添加主配置文件的监听地址
[root@localhost ceshi3]# vim /etc/httpd/conf/httpd.conf
###输入/Listen 查询到监听地址,修改、添加监听地址
Listen 192.168.181.167:80    #IP为本机地址
Listen 192.168.181.167:8080  #IP为本机地址,添加端口8080
#Listen 80 					 #关闭ipv6监听地址
-----------》wq
  • 重启服务
[root@localhost extra]# systemctl restart httpd
2.3.4 使用win10虚拟机测试

输入www.ceshi2.com:8080
在这里插入图片描述

输入www.ceshi.com
在这里插入图片描述

以上为基于不同端口创建虚拟主机

2.4 基于IP地址的虚拟主机
2.4.1 添加网卡

在这里插入图片描述

2.4.2 修改子配置文件
[root@localhost extra]# vim vhost.conf
<VirtualHost 192.168.181.171:80> #修改地址为ens33的IP
  DocumentRoot "/var/www/html/ceshi/"
 #ServerName www.ceshi.com  #注释域名
  Errorlog "logs/www.ceshi.com.error_log"
  Customlog "logs/www.ceshi.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost 192.168.181.129:80> ##修改地址为ens36的IP
  DocumentRoot "/var/www/html/ceshi2/"
  #ServerName www.ceshi2.com  #注释域名
  Errorlog "logs/www.ceshi2.com.error_log"
  Customlog "logs/www.ceshi2.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>
------》wq
2.4.3 修改目录站点
[root@localhost extra]# cd /var/www/html
[root@localhost html]# ls
ceshi  ceshi2
[root@localhost html]# cd ceshi
[root@localhost ceshi]# vim index.html 
<h1>this is 171 ceshi</h1>
[root@localhost extra]# cd /var/www/html/ceshi2
[root@localhost ceshi2]# vim index.html 
<h1>this is 129 ceshi2</h1>
2.4.4 修改监听地址
[root@localhost ceshi2]# vim /etc/httpd/conf/httpd.conf 
##输入/Listen 找到监听地址
Listen 192.168.181.171:80 
Listen 192.168.181.129:80     ##添加本地ens36的IP地址
#Listen 192.168.181.171:8080  ##关闭8080端口
#Listen 80
-----------------》wq
  • 开启服务
[root@localhost ceshi2]# systemctl restart httpd
2.4.5 使用win10虚拟机测试

开启浏览器输入192.168.181.129 :
在这里插入图片描述

开启浏览器输入192.168.181.171 :
在这里插入图片描述

2.4.6 改为使用域名访问

正常的生产环境是直接输入域名的,这里我们可以先修改子配置文件,加上域名:

[root@localhost extra]# vim vhost.conf
<VirtualHost 192.168.181.171:80> #修改地址为ens33的IP
  DocumentRoot "/var/www/html/ceshi/"
 ServerName www.ceshi.com  #注释域名
  Errorlog "logs/www.ceshi.com.error_log"
  Customlog "logs/www.ceshi.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost 192.168.181.129:80> ##修改地址为ens36的IP
  DocumentRoot "/var/www/html/ceshi2/"
  ServerName www.ceshi2.com  #注释域名
  Errorlog "logs/www.ceshi2.com.error_log"
  Customlog "logs/www.ceshi2.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>
------》wq

然后更改DNS服务的区域数据配置文件

[root@localhost named]# cd /var/named
[root@localhost named]# ls
ceshi2.com.zone  data     named.ca     named.localhost  slaves
ceshi.com.zone   dynamic  named.empty  named.loopback
[root@localhost named]# vim ceshi2.com.zone 
......
www IN  A       192.168.181.129 ##将IP地址改为ens36的地址
------》wq
  • 重启服务
[root@localhost named]# systemctl restart named
[root@localhost named]# systemctl restart httpd
2.4.6 使用win10虚拟机测试

输入www.ceshi.com
在这里插入图片描述

输入www.ceshi2.com

在这里插入图片描述

总结

现网中最省钱的方式是不同端口访问不同IP,常用的方法为做一个main引导页面,然后其中指向各种子页面。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!