两种nginx限流方式

一般情况下,首页的并发量是比较大的,即使 有了多级缓存,当用户不停的刷新页面的时候,也是没有必要的,另外如果有恶意的请求 大量达到,也会对系统造成影响。

而限流就是保护措施之一。

网站上线了:用户访问的。(用户访问量不大) 大:考虑并发(考虑用户手速)

  • 限制用户
    • 限制用户的访问速率
    • 限制用户的连接数

5.1 生活中限流对比

  • 水坝泄洪,通过闸口限制洪水流量(控制流量速度)。
  • 办理银行业务:所有人先领号,各窗口叫号处理。每个窗口处理速度根据客户具体业务而定,所有人排队等待叫号即可。若快下班时,告知客户明日再来(拒绝流量)
  • 火车站排队买票安检,通过排队 的方式依次放入。(缓存带处理任务)

5.2 nginx的限流

nginx提供两种限流的方式:

  • 一是控制速率
  • 二是控制并发连接数

5.2.1 控制速率

控制速率的方式之一就是采用漏桶算法。

(1)漏桶算法实现控制速率限流

漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率.示意图如下:

在这里插入图片描述

(2)nginx的配置

配置示意图如下:
在这里插入图片描述

  • 修改/usr/local/openresty/nginx/conf/nginx.conf:
#限流设置,每秒只能访问2次
limit_req_zone $binary_remote_addr zone=contentRateLimit:10m rate=2r/s;

location /read_content {
    #使用限流配置
    limit_req zone=contentRateLimit;
    content_by_lua_file /root/lua/read_content.lua;
}
  • 整个nginx.conf配置如下:
user  root root;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #cache
    lua_shared_dict dis_cache 128m;

    #限流设置
    limit_req_zone $binary_remote_addr 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值