一: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的发布文件
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
第四步:
systemctl restart httpd 重启服务
测试:
默认的站点
二:设置内部的访问控制
在日常生活中,我们需要一些网站能被人访问到,一些不能,能被什么人所访问到。为了解决这个问题,我们需要进行以下设置。
<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的信息
systemctl restart httpd
测试:用172.25.254.115的主机浏览器访问不到,其他主机的浏览器可以
第二种:(类似白名单)
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 拒绝所有人来访问
systemctl restart httpd
测试:用172.25.254.115的主机浏览器能访问到,其他主机的浏览器不可以
<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,否则会覆盖
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 所有设定的用户都可以查看
第三步:
systemctl restart httpd
测试:在浏览器查看172.25.254.115的时候需要输入用户跟密码,而且只有meng可以查看
可以查看到
为了解决这个问题,我们将文件里修改为设置的加密用户都可以访问,将原本只允许meng查看注释掉
重启服务
清除浏览器缓存(ctrl+shift+delete)