nginx请求频率限制模块ngx_http_limit_req_module
模块: ngx_http_limit_req_module
作用: 限制客户端请求频率,防止恶意攻击
配置示例:
http {
limit_req_zone $binary_remote_addr zone=req_perip:50m rate=10r/s;
...
server {
...
location /api/ {
limit_req zone=req_perip burst= nodelay;
limit_req_status ;
}
}
}
说明: 示例中定义的区域名称为req_perip(zone=req_perip),分配内存大小为50m(如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 ),同一个ip($binary_remote_addr)平均处理的请求频率不能超过每秒10次(rate=10r/s); 如果超过每秒10次但超过的请求数量小于等于50(burst=50)时,会延迟请求。如果超过每秒10次的请求数超过50,则立即返回503(limit_req_status 503)给客户端
涉及指令:
limit_req_zone
limit_req
limit_req_status
limit_req_log_level
指令详解:
limit_req_zone 语法: limit_req_zone key zone=name:size rate=rate; (可理解为该指令用来定义限制请求频率)
可配置区域: http key: 必选项;取值范围: 1,text(文本); 2,nginx变量;3,text和nginx变量的组合; 注: 1.7.6版本之前取值只能是nginx变量 name: 必选项;自定义字符串 size: 必选项;分配内存大小,用来保存键值的状态参数 rate: 必选项;每秒可请求的频率(r/s), 或每分钟可请求的频率(r/m)
limit_req 语法: limit_req zone=name [burst=number] [nodelay]; (可理解为使用定义的限制请求频率,一定是先定义后使用!也就是一定要有limit_req_zone指令的配置后才能使用该配置)
可配置区域: http, server, location name: 必选项;自定义字符串, 名字必须与limit_req_zone中zone=name这个名字一致 number: 必选项;正整数数字, 平均每秒允许不超过limit_req_zone指令中rate规定的请求数,并且不会超过该值所指定数量的请求, 可延迟请求的数量 nodelay: 可选配置, 表示请求频率超过rate规定值后又超过burst规定值后立即返回客户端503(可设置返回code)
limit_req_status 语法: limit_req_status code;
默认值: 503
可配置区域: http, server, location 表示超出limit_req配置的请求数量后返回给客户端的错误码 使用该指令最低版本 1.3.15
limit_req_log_level 语法: limit_req_log_level info | notice | warn | error;
默认值: limit_req_log_level error;
可配置区域: http, server, location 当服务器拒绝处理由于速率超过或延迟请求处理而拒绝处理请求时,设置所需的日志记录级别。 最低版本: 0.8.18
常见错误:
nginx: [emerg] zero size shared memory zone "oneip"
出现此错误都是因为在未指定limit_req_zone指定就使用了limit_req指令的原因(或者limit_req中的name值和limit_req_zone中定义的name值不一致)
nginx请求频率限制模块ngx_http_limit_req_module的更多相关文章
- nginx 请求限制和访问控制
请求限制 限制主要有两种类型: 连接频率限制: limit_conn_module 请求频率限制: limit_req_module HTTP协议的连接与请求 HTTP协议是基于TCP的,如果要完成一 ...
- Nginx请求连接限制
目录 Nginx的请求限制 HTTP协议的连接与请求 连接限制 配置示例 做个演示: 请求限制 配置示例 基本指令 limit_req_zone limit_req zone 做个演示: Nginx的 ...
- 利用Nginx中的Upstream模块配置服务器负载均衡
1. 前言 nginx有一个最大的功能就是可以实现服务器的负载均衡,本篇博文就利用nginx中的upstream模块来配置一个简单的负载均衡.关于nginx的安装和配置文件可以查阅博文:windows ...
- nginx编译安装配置模块大全
使用configure命令配置构建.它定义了系统的各个方面,包括允许nginx用于连接处理的方法.最后,它会创建一个Makefile.该configure命令支持以下参数:--help 打印帮助信息. ...
- Nginx一致性哈希模块的Lua实现
Nginx一致性哈希模块的Lua重新实现 技术背景: 最近在工作中使用了nginx+redis 的架构,redis在后台做分布式存储,每个redis都存放不同的数据,这些数据都是某门户网站通过Hado ...
- nginx请求体读取(二)
2,丢弃请求体 一个模块想要主动的丢弃客户端发过的请求体,可以调用nginx核心提供的ngx_http_discard_request_body()接口,主动丢弃的原因可能有很多种,如模块的业务逻辑压 ...
- nginx请求体读取
上节说到nginx核心本身不会主动读取请求体,这个工作是交给请求处理阶段的模块来做,但是nginx核心提供了ngx_http_read_client_request_body()接口来读取请求体,另外 ...
- Nginx详解八:Nginx基础篇之Nginx请求限制的配置语法与原理
Nginx的请求限制: 连接频率的限制:limit_conn_module 配置语法:limit_conn_zone key zone=name:size;默认状态:-配置方法:http 配置语法:l ...
- [日常] nginx访问频率限制
去年的事,随便记记 ========================================================================= 2017年3月15日 记录: n ...
随机推荐
- Javascript中escape()、encodeURI()、encodeURIComponent()的区别
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- FTP 搭建
FTP 搭建 FTP 是 File Transfer Protocol(文件传输协议)的英文简称,它工作在 0SI 模型的第七层,TCP 模型的第四屋上,即应用层. 一.FTP 简介 FTP 会话时包 ...
- c++11多线程学习笔记之二 mutex使用
// 1111111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include ...
- 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)
Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...
- 2018.09.13 poj2728Desert King(最优比率生成树)
传送门 01分数规划经典题. 不过用krsukal会T掉. 这题用prim反而更快(毕竟是完全图) 因此直接二分+最小生成树搞定. 代码: #include<iostream> #incl ...
- js splice方法
处理数组的方法很多,javascript splice()算是最强大的了,它可以用于插入.删除或替换数组的元素.下面来一一介绍! 1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第 ...
- Spring 集成 MemCache
1)xml <bean class="com.danga.MemCached.SockIOPool" factory-method="getInstance&quo ...
- java:从消息机制谈到观察者模式
从简单的例子开始 同样,我们还是先看一个简单例子:创建一个窗口实现加法的计算功能.其效果如下: 图1: 加法计算 Calculator.java: import javax.swing.*; impo ...
- Linux下的ICMP反弹后门:PRISM
搜索的时候无意中看见的这款基于ping的ICMP后门.于是到作者的github上看看,居然是阴文的,为了过级,只能强忍着看了,学生狗伤不起.还好比较简单易懂,正如简介说的一样:“PRISM is an ...
- 区间 桂林电子科技大学第三届ACM程序设计竞赛
链接:https://ac.nowcoder.com/acm/contest/558/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...