首页 > 系统相关 >Nginx配置限速

Nginx配置限速

时间:2022-11-07 00:00:17浏览次数:59  
标签:index req 限制 addr zone 配置 限速 Nginx limit

限速:在生产环境中,为了保护WEB服务器的安全,我们都会对用户的访问做出一些限制,保证服务器的安全及资源的合理分配。
分类:下载速度限速、单位时间内请求数限制、基于客户端的并发连接限速
常用模块:limit_req_zone、limit_req_conn
limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”。
limit_req_conn 用来限制同一时间连接数,即并发限制。

漏桶原理:缓存请求、匀速处理、多余的请求直接丢弃。

应用场景
下载限速:限制现在速度及并发连接数,应用在下载服务器中,保护带宽及服务器的IO资源。

请求限速:限制单位时间内用户访问请求,防止恶意攻击,保护服务器及资源安全。
具体实现
一、单位时间内请求数限制

#基于IP对下载速率做限制  限制每秒处理1次请求,对突发超过5个以后的请求放入缓存区 
http {
    limit_req_zone $binary_remote_addr zone=xxx:10m rate=1r/s;
    server {
        location /abc {
            limit_req zone=xxx burst=5 nodelay;
        }
}
limit_req_zone $binary_remote_addr zone=xxx:10m rate=1r/s;
第一个参数:$binary_remote_addr 表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址。
第二个参数:zone=xxx:10m表示生成一个大小为10M,名字为xxx的内存区域,用来存储访问的频次信息。
第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的。

limit_req zone=xxx burst=5 nodelay;
第一个参数:zone=xxx 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应。
第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内。

二、限制并发连接数

#基于IP做连接限制  限制同一IP并发为1
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /abc {
           limit_conn addr 1;
        }

    }

}

三、限制下载速度

下载速度为100k
server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /abc {
           limit_rate 100k;
        }

    }

四、综合小案例

限制web服务器请求处理为1秒一个,触发值为5;限制并发连接数为4;限制下载速度为100.
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
#基于IP做连接限制  限制同一IP并发为1  下载速度为100K
limit_conn_zone $binary_remote_addr zone=addr:10m;
#基于IP对下载速率做限制  限制每秒处理1次请求,对突发超过5个以后的请求放入缓存区 
limit_req_zone $binary_remote_addr zone=addr:10m rate=1r/s;
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /abc {
           limit_req zone=one burst=5 nodelay;
           limit_conn addr 4;
           limit_rate 100k;
        }

    }

}

标签:index,req,限制,addr,zone,配置,限速,Nginx,limit
From: https://www.cnblogs.com/tjane/p/16864695.html

相关文章

  • Nginx反向代理配置
    代理:代理服务器扮演的就是一个中间人的角色。首先用户将请求发给代理服务器,然后代理服务器代用户去访问数据,最后代理服务器将数据给用户。分类:正向代理和反向代理正向代......
  • 使用root ssh登录ubuntu22.4配置
    前言在安装k8s集群时,需要使用root用户ssh登录远程服务器进行安装操作,但是root登录是默认关闭的,因此本篇讲解如何开启配置,当前测试版本ubuntu22.4安装部署使用管理权......
  • docker清空网络配置
    docker网络故障相同的ip绑定给了两个网卡,需要清空网络ipaddr|grep10.79inet10.79.106.1/24brd10.79.106.255scopeglobalbr-a0ebe04d1152i......
  • VS Code配置
    Windows下的配置launch.json{"version":"0.2.0","configurations":[{"name":"C/C++:g++.exe生成和调试活动文件",......
  • SpringCloud_H(配置中心)
    1、Config微服务意味着要将单体应用中的业务拆分成一个个子服务,每个子服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一......
  • 120-nginx 配置server访问前端目录
    server{listen8082;server_namelocalhost;#charsetkoi8-r;#access_loglogs/host.access.logmain;locatio......
  • nginx 进程模型-整体架构
    title:"Nginx进程模型-整体架构"date:2021-04-10T14:26:32+08:00draft:falsetags:["nginx","进程"]从网上找了一个非常好的图片,从图中可以看到很多东西Nginx......
  • 达梦数据库主从配置
    数据库名    实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT备注DMSERVER01DMSERVER01523745101192.168.0.128 5510165101主库DMSERVER02DMSERVER025237......
  • 自建docker hub 容器缓存加速器下 的nginx 配置
    文档说明:只记录关键地方;dockerhub加速器nginx配置要求加速器只允许GETHEAD请求方法只允许docker-library/official-images通过加速器控制允许通过加速器......
  • 云原生之旅 - 8)云原生时代的网关 Ingress Nginx
    前言当我们在Kubernetes部署的服务需要暴露给外部用户使用时,有三种选择:LoadBalancer,NodePort,Ingress。LoadBalancer类型得结合各个CloudProvider提供的LB来使用,如果需......