访问限制
访问限制是一种防止恶意访问的常用手段,可以指定同一IP地址在固定时间内的访问次数,或者指定同一IP地址在固定时间内建立连接的次数,若超过网站指定的次数访问将不成功。
请求频率限制配置
请求频率限制是限制客户端固定时间内发起请求的次数。
如何启用请求频率?
(1)定义:在开启访问限制之前,需要对限制规则进行定义。
如下图:在nginx主配置文件中定义好如下限制规则
上述参数详解:
limit_req_zone 表示限制请求规则,其中zone也有空间的意思。
$binary_remote_addr 表示二进制形式的客户端地址。
req_zone 表示规则名称,为了便于引用,允许用户自定义。
10m 表示存储客户端IP地址的空间大小。
rate 表示访问频率的限制范围,1 r/s 表示1秒钟一次。
(2)引用
限制规则定义之后需要在主页配置文件中引用。
(3)测试
首次访问页面浏览正常
连续多访问几次后,出现页面无法访问。这是因为在主配置文件中定义了请求频率限制,并在主页配置文件中引用了。
注意:Nginx的主配置文件对应它管理的所有网站,主页配置文件只对应它所属的网站。如果将限制规则引用到主配置文件中,Nginx管理的所有网站都将被改变;
如何启用连接频率限制?
连接频率限制是指限制客户端固定时间内发起建立连接的次数。
1.定义
与请求频率相同,连接频率限制也需要进行定义。但连接频率在主配置文件中只定义规则名称与IP地址存储空间。
limit_conn_zone 表示限制连接规则,其中zone也有空间的意思。
$binary_remote_addr 表示二进制形式的客户端地址。
conn_zone 表示规则名称,为了便于引用,允许用户自定义。
10m 表示存储客户端IP地址的空间大小。
2、在主页文件中配置引用即可
上述引用了连接频率限制的名称,还定义了同一个用户IP地址的最大连接数,此处为一个连接。
**************************************************************************************************************
访问控制
访问控制是控制客户端对服务端的访问,并非仅限制请求次数,而是允许某些请求或者直接拒绝某些请求。分为基于主机的访问控制,另一种是基于用户的访问控制。
1、原理:基于主机的访问控制是指通过主机的信息,来判断是否接受请求,该功能基于Nginx模块——ngx_http_access_module。
基于主机
在主页配置文件中添加基于主机的访问控制:
allow 表示允许该IP访问
deny 表示禁止该IP访问,all表示所有
测试:
1、用不在白名单的客户端进行访问,结果被拒绝。
2、用白名单的用户访问可以成功访问
注意:allow与deny是按照顺序执行的。
基于用户
原理:基于用户的访问控制是指通过用户的信息,来判断是否接受该请求,该功能基于Nginx模块——ngx_http_auth_basic_module。
1、创建用户认证文件
使用htpasswd 生成用户密码。
-c是创建的意思
-m是加密的意思
/etc/nginx/conf.d/passwd表示密码文件的路径。
2、启用认证
测试可知需要输入用户信息才能访问