nginx限流模块(防范DDOS攻击)
Nginx限流模式(防范DDOS攻击)
nginx中俩个限流模块:
1、ngx_http_limit_req_module(按请求速率限流)
2、ngx_http_limit_conn_module(按连接数限流)
放到nginx配置文件中:(这是完整配置哦~)
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
limit_conn_zone $binary_remote_addr zone=mylimit:10m;
server {
location \ {
limit_req zone=mylimit burst=5 nodelay;
limit_conn mylimit 100;
}
}
}
实现的限流效果:每个ip每秒可以访问2次;并且最大并发连接数为100(可以同时接收100个请求,30毫秒内重复ip只接收1次)
1、ngx_http_limit_req_module 模块
ngx_http_limit_req_module 速率限制,采用的漏桶算法(暂时拦截住上方水的向下流动,等待桶中的一部分水漏走后,再放行上方水)
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
server {
location / {
limit_req zone=mylimit burst=5 nodelay;
}
}
}
上述规则限制了每个IP访问的速度为2r/s,并将该规则作用于根目录。单个ip每秒可以访问2次
测试命令:ab -n 10 http://127.0.0.1:80/index.html
-n:总请求数
-c:并发数 第一个参数:$binary_remote_addr 表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址
第二个参数:zone=mylimit:10m表示生成一个大小为10M,名字为mylimit的内存区域,用来存储访问的频次信息
第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的
第四个参数:zone=mylimit 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应
第五个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内
第六个参数:nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队
示例2 自定义返回值
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
server {
location / {
limit_req zone=mylimit burst=4 nodelay;
limit_req_status 598;
}
}
}
2、ngx_http_limit_conn_module 模块
这个模块用来限制同一时间连接数,即并发限制。并非所有的连接都被计数。只有在服务器处理了请求并且已经读取了整个请求头时,连接才被计数。
http {
limit_conn_status 503;
limit_conn_zone $binary_remote_addr zone=mylimit:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
limit_conn mylimit 100; #表示最大并发连接数100
limit_conn perserver 1000; #表示该服务提供的总连接数不得超过1000,超过请求的会被拒绝
}
}
第一个参数:limit_conn_status 自定义返回值
第二个参数:zone=mylimit:10m 表示生成一个大小为10M,名字为mylimit的内存区域,用来存储访问的频次信息
小测试:一次只允许每个IP地址一个连接
http {
limit_conn_zone $binary_remote_addr zone=mylimit:10m;
server {
location /download/ {
limit_conn addr 1;
}
}
}
东西没有高下之分,全在人心一念。
nginx限流模块(防范DDOS攻击)的更多相关文章
- 限流保护——nginx限流模块
1.限制请求次数——limit_req_zone模块 a.意义:limit_req_zone 表示限制单位时间内的请求数,即速率限制,采用的漏桶算法 a.在 conf/nginx.conf 配置文件中 ...
- Nginx限流办法
Nginx 限流 电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单.信誉分析,进而根据用户ip信誉权重做相应的流量拦截.限制流量.Nginx自身有的请求限制模块ng ...
- 死磕nginx系列--nginx 限流配置
限流算法 令牌桶算法 算法思想是: 令牌以固定速率产生,并缓存到令牌桶中: 令牌桶放满时,多余的令牌被丢弃: 请求要消耗等比例的令牌才能被处理: 令牌不够时,请求被缓存. 漏桶算法 算法思想是: 水( ...
- 安全性测试之防范 DDoS 攻击
安全性测试之防范 DDoS 攻击 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90882 ...
- 防范DDOS攻击脚本
防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp --syn -j syn-flood iptables ...
- Nginx限流
文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 在当今流量徒增的互联网时代,很多业务场景都会涉及到高并发.这个时候接口进行限流是非常有必要的,而限流是Ngin ...
- nginx限流&健康检查
Nginx原生限流模块: ngx_http_limit_conn_module模块 根据前端请求域名或ip生成一个key,对于每个key对应的网络连接数进行限制. 配置如下: http模块 ser ...
- [转]Nginx限流配置
原文:https://www.cnblogs.com/biglittleant/p/8979915.html 作者:biglittleant 1. 限流算法 1.1 令牌桶算法 算法思想是: 令牌以固 ...
- 防范DDoS攻击的几种方式
一.拒绝服务攻击的发展: 从拒绝服务攻击诞生到现在已经有了很多的发展,从最初的简单Dos到现在的DdoS.那么什么是Dos和DdoS呢?DoS是一种利用单台计算机的攻击 方式.而DdoS(Distri ...
随机推荐
- python发送钉钉消息
import requests import time import hashlib import hmac import base64 import re def SendMessage(messa ...
- 基于多端口的Web服务
[Centos7.4版本] !!!测试环境我们首关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~ ...
- 记一次MySQL(5.7版本)数据库的主从同步和备份
我遇到的问题 我先后在BAT三大云服务器商购买了学生机,配置如下 百度云2核/4G 阿里云1核/2G 腾讯云1核/2G 我的解决方案 由于我不知道百度云的续费规则,导致买了2核/4G的服务器之后以为像 ...
- MyBatis 延迟加载(十四)
什么是延迟加载 延迟加载又叫懒加载,也叫按需加载,也就是说先加载主表信息,需要的时候,再去加载从表信息.代码中有查询语句,当执行到查询语句时,并不是马上去数据库中查询,而是根据设置的延迟策略将查询向后 ...
- centos 7安装freescale交叉编译工具链
方法1:可以直接下载gcc包,把文件夹放到/usr/local下即可,然后修改PATH环境变量,既可以使用 方法2:可以下载.rpm包,在本地进行安装,下载地址为(http://www.panduod ...
- 行业资讯 | Android WebView 致安卓应用闪退,mPaaS 助你规避这波 Bug
根据外媒 9to5 Google 报道,3 月 23 日几个小时内,大量安卓用户遇到一些安卓应用连续闪退的情况,有人发现卸载安卓系统 WebView 就可以停止闪退.目前,谷歌已经发布了应用崩溃问题的 ...
- 如何屏蔽 iOS 软件自动更新,去除更新通知和标记
适用于 iOS.iPadOS 和 watchOS,即 iPhone.iPad 和 Apple Watch 通用. 请访问原文链接:https://sysin.org/article/Disable-i ...
- Mysql索引数据结构为什么是B+树?
目录 Mysql索引数据结构 二叉树 红黑树 B-Tree B+Tree Mysql索引数据结构 下面列举了常见的数据结构 二叉树 红黑树 Hash表 B-Tree(B树) Select * from ...
- Linux基础服务——Bind DNS服务 Part1
Linux基础服务--Bind DNS服务 Part1 DNS正向解析 实验环境: CentOS8.3.2011 IP地址:192.168.100.50 VMware虚拟环境 NAT网段 需要解析的区 ...
- Yolov3 的 OneFlow 实现
Yolov3 的 OneFlow 实现 1.简介 YOLO 系列的算法(经典的v1~v3),是单阶段目标检测网络的开山鼻祖,YOLO-You only look once,表明其单阶段的特征,正是由于 ...