Nginx对代理HTTP资源的限制访问

本文详细介绍了如何使用Nginx进行访问限制,包括限制连接数量、请求速率、请求带宽,以及如何设置访问权限、冷数据过期时间和防盗链策略。在限制连接数量时,通过配置指令控制并发连接数;限制请求速率和带宽则通过相应指令设定阈值。同时,文章还探讨了访问权限设置,防止中文编码乱码问题,并讲解了Nginx日志管理和防盗链的实现方法,保护服务器资源不被滥用。
摘要由CSDN通过智能技术生成

一、限制连接数量

为了限制连接的数量,首先,使用limit_conn_zone指令来定义密钥并设置共享内存区域的参数(工作进程将使用该区域来共享键值的计数器)。作为第一个参数,指定作为关键字计算的表达式。在第二个参数区域中,指定区域的名称及其大小。

limit_conn_zone $binary_remote_addr zone=addr:10m;

其次,使用limit_conn指令在一个位置、一个虚拟服务器或整个HTTP上下文中应用该限制。将共享内存区域的名称指定为第一个参数,并将每个密钥的允许连接的数量作为第二个参数。

        location /download/ {
        limit_conn addr 1;
        }

这里写图片描述

[root@server1 download]# pwd
/usr/local/nginx/html/download
[root@server1 download]# ls
iso7.gif

测试:当访问该内容并发数为1时

[root@foundation7 ~]# ab -c 1 -n 10 http://172.25.7.1/download/iso7.gif
[root@server1 logs]# cat  access.log 

全部访问成功
这里写图片描述
测试:当访问该内容并发数为10时

[root@foundation7 ~]# ab -c 10  -n 10 http://172.25.7.1/download/iso7.gif
[root@server1 logs]# cat  access.log 

只有一次访问成功,其他都是503报错
这里写图片描述


二、限制请求速率

为了限制请求率,首先,使limit_req_zone指令设置密钥和共享内存区域来保持计数器。

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

一旦定义了共享内存区域,在虚拟服务器或位置(或者如果需要的话,在全局上)使用limit_req指令来限制请求率:

location /download/ {
    limit_req zone=one burst=5;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值