网站防刷限流

我在nginx 和tengine 之间选择了tengine。tengine是淘宝公司在nginx 研发的。同时也测试过nginx 在一些功能方面不是很好。比如:

限流这块,nginx目前只支持对ip限流

还有对后端服务器的检测方面都不如tengine

Tengine version: Tengine/2.3.1
nginx version: nginx/1.16.0

今天要说的模块:

limit_req_zone 可以 支持对iIP 地址 基于URL,和URL的参数组合限流

在全局配置定义

limit_req_zone $binary_remote_addr zone=rate_ip:50m rate=1r/s;  #对IP 一秒钟限流

limit_req_zone $args zone=user:50m rate=3r/s;                            #基于URL参数限流
limit_req_zone $binary_remote_addr$args zone=ip_user:50m rate=2r/s;   #基于ip+参数限流
limit_req_zone $binary_remote_addr$request_uri zone=ip_url:50m rate=1r/s; 基于IP+url
limit_req_zone $args zone=high_cpu:50m rate=5r/m;  #基于URL参数限流

在局部配置文件引用

location /  {
limit_req zone=rate_ip burst=2 delay=1;

burst参数是增加漏斗数量,本来限制是一个IP每秒一个请求,现在加了burst,可以实现每秒请求3个,后面2个进入排队中。

delay=1,表示:burst 里面一个不需要排队。

原文地址:https://www.cnblogs.com/webnginx/p/12069435.html

时间: 2024-08-29 23:37:12

网站防刷限流的相关文章

网站防刷方案 -摘自网络

1. 访问网站所涉及环节 简单说就是重复相同的请求 首先看看访问流程所设计的每个环节 User -> Browse -> CDN/Proxy Cache -> Web Server -> App Server / fastcgi pool -> Cache -> Database 大部分网站都是这样的结构:用户,浏览器,CDN或反向代理,Web服务器,应用服务器,缓存,数据库 这个访问过程中所涉及的设备 PC -> ADSL/Cable/Ethernet ->

通过注解实现接口限流防刷

采用注解的方式 1)定义一个注解 @Retention(RUNTIME) @Target(METHOD) public @interface AccessLimit { int seconds(); int maxCount(); } 2)在需要限流的方法前加这样的注解 @AccessLimit(seconds=5, maxCount=5) 3)在拦截器里进行判断,看方法是否使用了AccessLimit注解修饰 @Component public class AccessInterceptor

网站限流处理

1.常见两种方式 漏桶算法和令牌桶算法 漏桶算法:1.有一个固定容量的漏桶,已固定的速率流出水滴. 2.可以任意速率流入水滴到漏桶 3.当漏桶满了,水溢出(相当于丢弃) 令牌桶算法: 1.以固定的速率向桶里放令牌 2.当桶内的令牌数量达到最大值后,后续放入的令牌被丢弃 3.当需要发送N个单位大小的数据时,就从桶内去N个令牌 4.当桶内的令牌数量小于设定的大小时,不能删除令牌,也就是不能发送数据,这是数据可能被丢弃,也可能被缓冲区缓存下来. 2.其它方式 统计计数,主要思想是记录指定时间内的访问量

用nginx实现分布式限流(防DDOS攻击)

1.前言 一般对外暴露的系统,在促销或者黑客攻击时会涌来大量的请求,为了保护系统不被瞬间到来的高并发流量给打垮, 就需要限流 . 本文主要阐述如何用nginx 来实现限流. 听说 Hystrix 也可以, 各位有兴趣可以去研究哈 . 2. 首先部署一个对外暴露接口的程序 我这里部署的是一个spring boot 项目 里面暴露了如下接口, 很简单 package com.anuo.app.controller; import org.slf4j.Logger; import org.slf4j.

大型网站限流算法的实现和改造

最近写了一个限流的插件,所以避免不了的接触到了一些限流算法.本篇文章就来分析一下这几种常见的限流算法 分析之前 依我个人的理解来说限流的话应该灵活到可以针对每一个接口来做.比如说一个类里面有5个接口,那么我的限流插件就应该能针对每一个接口就行不同的限流方案.所以呢,既然针对的每个接口所以就需要一个可以唯一标示这个接口的key(我取的是类名+方法名+入参). 分布式限流强烈推荐使用redis+lua或者nginx+lua来实现. 这里用2个限流条件来做示例讲一下常见的限流算法: 接口1它10秒钟最

程序员放大招教你网站怎么做短信验证码防刷验证码机制-速码云

文章来源:http://www.4006026717.com 在我们开始发送了 短信验证码的时候在前台中会出现一分钟的倒计时,进行了这个操作了之后,在这段时间之内,如果用户多次提交的话是无法发送请求的.这种的方法是最为经常使用的一种,虽然很简单,但是却非常的好用,但是有个缺点就是,如果稍微懂一点技术的人是可以绕过这个限制,然后继续发送验证码的. [ 短信平台](http://www.4006026717.com) 1.针对时间进行限制 公司在进行运行的时候有些时候会出现系统被刷短信的情况,这个对

OpenResty + Lua + Redis 实现 客户端ip防刷

一.环境说明: 在Centos7上安装openresty此次安装采用的是下载openresty的yum源来安装 [[email protected] conf]# sudo yum-config-manager --add-repo https://openresty.org/yum/cn/centos/OpenResty.repo sudo:yum-config-manager:找不到命令解决办法: [[email protected] conf]# yum -y install yum-ut

微服务限流设计

微服务限流设计主要场景是今年双11备战准备了很长时间,但峰值在11:50/11:55直接将流量限掉了 ,由此一直在思考一种更好的限流方式. 最近正好在做一个统一接入服务,类似于网关接入所有请求,并将请求进行转发,在这里面可以实现 如果请求达到配置中心调用的一个峰值直接在转发请求的时候将超过设置请求量数据直接加个参数,后边 服务可根据参数简化计算并返回. 这里面涉及到一个哪些用户请求要通用返回的问题,可以根据节点缓存几日来信息来确认,哪些用户 是频道长期用户,哪些是大促来的无效用户,下游请求我们服

秒杀:注解限流

接口限流防刷 可以用缓存来实现,一分钟之内访问一次加1达到一定次数就拒绝 原文地址:https://www.cnblogs.com/xjatj/p/10327161.html