基于用户的访问控制
认证质询:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码
认证:客户端用户填入账号和密码后再次发送请求报文,认证通过时,则服务器发送响应的资源
认证方式两种:
basic:明文 digest :消息摘要认证,兼容性差
安全域:需要用户认证后方能访问的路径,应该通过名称对其进行标识,以便于告知用户认证的原因
/etc/httpd/conf.d/test.conf
提供账号和密码存储(文本文件)
使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
其中 -c 自动创建文件,仅应该在文件不存在时使用
-m:md5格式加密,默认方式
-s sha格式加密
-D:删除指定用户
htpasswd -c /etc/httpd/conf.d/.httpusers http1
htpasswd -s /etc/httpd/conf.d/.httpusers http2
htpasswd -m /etc/httpd/conf.d/.httpusers http3
允许账号文件中的所有用户登录访问
Require valid-user
另一种方法实现用户访问控制
先在需要访问的目录下面创建一个.htaccess文件
vim .htaccess
然后在文件中写入
因为.htaccess文件默认不会生效,所以我们需要在配置文件 /etc/httpd/conf.d/test.conf中添加
然后重新加载服务
Service httpd reload
基于组账号进行认证
在/etc/httpd/conf.d/下
vim .htpgroups
打开文件.htaccess进行修改
重新加载服务
Service httpd reload
远程客户端和用户验证的控制
Satisfy all|any
All 客户机Ip和用户验证都需要通过才可以
Any 客户机Ip和用户验证,有一个满足即可
示例:
Status页面(web服务器的状态信息)
需要调用如下模块
系统默认没有把功能启用起来,需要在配置文件/etc/httpd/conf/httpd.conf中, 把注释去掉
Extendstatus on 显示扩展信息
虚拟主机
在一个服务器上可以建立多个站点,一个站点就是一个虚拟主机
站点标识:socket
IP相同,但端口不同
IP不同,但端口均为默认端口一个
FQDN不同:请求报文中首部 host:www.magedu.com
有三种实现方案
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机至少使用一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN
注意:一般虚拟机不要与main主机混用,因此,要使用虚拟主机,一般先禁用main主机
禁用方法:注释中心主机的documentroot指令即可
首先先建立3个站点
准备好站点下的页面
为三个站点添加3个ip地址
把每一个地址和每一个站点关联起来
当访问不同的ip地址就可以看到不同的网站页面
但是这种方式也有一个弊端,就是一个站点就要占用一个ip地址,浪费资源。另外用户访问的时候也是通过ip访问的,用户体验性不高。当然也可以通过域名解析将ip地址和域名对应起来。
使用同一个ip地址,但是端口号不同
然后重启服务
Service httpd restart
然而这种方式也有弊端,用户在访问的时候需要写上端口号,才能访问到想要访问的页面,但是不需要访问多个ip地址。
FQDN不同:根据请求报文中首部的不同,来区分不同的网站。
在/etc/hosts 中模拟dns解析
在/etc/httpd/conf.d/test.conf中
重新加载一下服务,然后进行访问
其中,在在/etc/httpd/conf.d/test.conf中,谁在第一个位置,谁就是默认站点(通过访问ip地址的时候,会显示的那个网站)