apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)

一:apache配置虚拟主机

问题:

在日常的网站发布中很多情况下都无法做到一个IP对应一个站点(因为一个ip的默认发布文件/目录只有一个),在IP4的情况下IP的资源是相对有限的。然而作为最流行的Apache自然也考虑到这种情况,所以我们需要在一个Apache服务器上配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是我们让不同的站点去访问同一个服务器上的不同目录,而不是只访问默认发布目录。

为了解决这个问题,我们需要做以下步骤

实验如下

第一步

编辑本地解析文件,我们需要在ip172.25.254.115上面添加新的两个站点,news.westos.com和music.westos.com

vim /etc/hosts  在里面写入以下内容(作本地解析)
172.25.254.115  www.westos.com  news.westos.com  music.westos.com

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

第二步

mkdir -p /var/www/meng/news    建立news的发布目录
mkdir -p /var/www/meng/music    建立music的发布目录
vim /var/www/meng/news/index.html     编辑news的发布文件 
vim /var/www/meng/music/index.html      编辑music的发布文件

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第1张图片
第三步

cd /etc/httpd/conf.d/  http的子配置目录
vim meng.conf     这个名字可以自定义,但是必须以.conf结尾,要不然不读取。
在这个文件里面写入

         DocumentRoot /var/www/html
         Customlog logs/default.log combined
               默认的80端口去访问/var/	www/html目录里的内容,它的日志是混合型日志,日志名字是/default.log


         ServerName news.westos.com
         DocumentRoot /var/www/meng/news
         Customlog logs/news.log combined


             Require all granted

 去访问80端口的时候,若是在浏览器输入的是news.westos.com则去访问/var/www/meng/news这个目录里面的内容,它的日志是混合型日志,日志名字是news.log,并且授权允许所有人来查询


        ServerName music.westos.com
        DocumentRoot /var/www/meng/music
        Customlog logs/music.log combined


             Require all granted      

在这里插入图片描述
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第2张图片

第四步

systemctl restart httpd    重启服务

在这里插入图片描述

测试:

默认的站点

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第3张图片
news站点
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第4张图片
music站点
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第5张图片

二:设置内部的访问控制

在日常生活中,我们需要一些网站能被人访问到,一些不能,能被什么人所访问到。为了解决这个问题,我们需要进行以下设置。

<1>基于ip的访问控制

实验如下:因为只是看实验效果,我们只对默认站点的进行操作。

第一种:(类似黑名单)

vim meng.conf         
在里面写入

           DocumentRoot /var/www/html
          Customlog logs/default.log combined


            Order Allow,Deny      先调用Allow,在调用Deny
            Allow from all         允许所有主机来查看
          Deny from 172.25.254.115   不允许172.25.254.115这个主机来访问,此时这个Deny172.25.254.115会覆盖Allow里面172.25.254.115的信息

在这里插入图片描述

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第6张图片

systemctl restart httpd

在这里插入图片描述

测试:用172.25.254.115的主机浏览器访问不到,其他主机的浏览器可以

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第7张图片

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第8张图片

第二种:(类似白名单)

vim meng.conf       
在里面写入
 
         DocumentRoot /var/www/html
        Customlog logs/default.log combined


          Order Deny,Allow    先调用Deny,在调用Allow
          Allow from 172.25.254.115     允许172.25.254.115这个主机来访问,此时这个Allow172.25.254.06会覆盖Deny里面172.25.254.06的信息
          Deny from all       拒绝所有人来访问

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第9张图片

systemctl restart httpd

在这里插入图片描述

测试:用172.25.254.115的主机浏览器能访问到,其他主机的浏览器不可以

在这里插入图片描述
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第10张图片

<2>基于用户访问控制(做这个实验前,为了实验环境纯净,可以把基于ip的代码注释掉)

htpasswd 创建认证文件 -c创建一个加密文件 -m 默认采用MD5算法对密码进行加密
ctrl+shift+delete 清除火狐浏览器缓存,不同浏览器清除缓存方法可能不一样

实验如下

第一步

cd /etc/httpd/          将加密文件生在/etc/httpd/目录下
htpasswd -cm .apache_auth meng   -cm 加密文件,用户
htpasswd -m .apache_auth hang      已经创建过了,就不用-c,否则会覆盖

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第11张图片

cd /etc/httpd/conf.d/ 
vim meng.conf 

         DocumentRoot /var/www/html
         Customlog logs/default.log combined


        AuthUserFile /etc/httpd/.apache_auth     加密文件为 /etc/httpd/.apache_auth
        AuthType basic                       加密类型是最基本的
        AuthName "Please input username and passwd"    弹出的框子里提示的字符
        #Require user meng    只允许meng这个用户去查看   
        Require valid-user        所有设定的用户都可以查看

在这里插入图片描述
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第12张图片

第三步

systemctl restart httpd

在这里插入图片描述
测试:在浏览器查看172.25.254.115的时候需要输入用户跟密码,而且只有meng可以查看

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第13张图片

可以查看到

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第14张图片
此时的hang查看不到,因为没有允许
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第15张图片

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第16张图片
为了解决这个问题,我们将文件里修改为设置的加密用户都可以访问,将原本只允许meng查看注释掉
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第17张图片
重启服务
在这里插入图片描述

清除浏览器缓存(ctrl+shift+delete)

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第18张图片
此时再去查看,meng和hang都可以查看到

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第19张图片

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第20张图片

apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第21张图片
apache配置虚拟主机(实现一个ip对应多个站点)设置内部的访问控制(基于ip和基于用户)_第22张图片

你可能感兴趣的:(linux运维)