基于用户的访问控制

认证质询:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码

认证:客户端用户填入账号和密码后再次发送请求报文,认证通过时,则服务器发送响应的资源

认证方式两种:

basic:明文  digest :消息摘要认证,兼容性差

安全域:需要用户认证后方能访问的路径,应该通过名称对其进行标识,以便于告知用户认证的原因

/etc/httpd/conf.d/test.conf

访问控制与虚拟主机_第1张图片

提供账号和密码存储(文本文件)

使用专用命令完成此类文件的创建及用户管理

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

然后在文件中写入

访问控制与虚拟主机_第2张图片

因为.htaccess文件默认不会生效,所以我们需要在配置文件 /etc/httpd/conf.d/test.conf中添加

然后重新加载服务

Service httpd reload

基于组账号进行认证

在/etc/httpd/conf.d/下

vim .htpgroups

打开文件.htaccess进行修改

访问控制与虚拟主机_第3张图片

重新加载服务

Service httpd  reload



远程客户端和用户验证的控制

Satisfy all|any

All 客户机Ip和用户验证都需要通过才可以

Any 客户机Ip和用户验证,有一个满足即可

示例:

访问控制与虚拟主机_第4张图片

Status页面(web服务器的状态信息)

需要调用如下模块

系统默认没有把功能启用起来,需要在配置文件/etc/httpd/conf/httpd.conf中,  把注释去掉

访问控制与虚拟主机_第5张图片

Extendstatus on 显示扩展信息

虚拟主机

在一个服务器上可以建立多个站点,一个站点就是一个虚拟主机

站点标识:socket

IP相同,但端口不同

IP不同,但端口均为默认端口一个

FQDN不同:请求报文中首部  host:www.magedu.com

有三种实现方案

基于ip:为每个虚拟主机准备至少一个ip地址

基于port:为每个虚拟主机至少使用一个独立的port

基于FQDN:为每个虚拟主机使用至少一个FQDN

注意:一般虚拟机不要与main主机混用,因此,要使用虚拟主机,一般先禁用main主机

禁用方法:注释中心主机的documentroot指令即可

首先先建立3个站点

准备好站点下的页面

为三个站点添加3个ip地址

把每一个地址和每一个站点关联起来

访问控制与虚拟主机_第6张图片

当访问不同的ip地址就可以看到不同的网站页面

访问控制与虚拟主机_第7张图片




但是这种方式也有一个弊端,就是一个站点就要占用一个ip地址,浪费资源。另外用户访问的时候也是通过ip访问的,用户体验性不高。当然也可以通过域名解析将ip地址和域名对应起来。

使用同一个ip地址,但是端口号不同

访问控制与虚拟主机_第8张图片


然后重启服务

Service httpd restart

访问控制与虚拟主机_第9张图片

然而这种方式也有弊端,用户在访问的时候需要写上端口号,才能访问到想要访问的页面,但是不需要访问多个ip地址。

FQDN不同:根据请求报文中首部的不同,来区分不同的网站。

在/etc/hosts 中模拟dns解析

c96876c918d6d1c5876585369b244d82.png

在/etc/httpd/conf.d/test.conf中

访问控制与虚拟主机_第10张图片


重新加载一下服务,然后进行访问

访问控制与虚拟主机_第11张图片

其中,在在/etc/httpd/conf.d/test.conf中,谁在第一个位置,谁就是默认站点(通过访问ip地址的时候,会显示的那个网站)

访问控制与虚拟主机_第12张图片