2019独角兽企业重金招聘Python工程师标准>>>

高并发系统有三把利器用来保护系统:缓存、降级和限流

今天我们这里说说限流。一般会在应用层配合redis做限流策略,这里我们聊聊nginx层限流。

限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务,以防止非预期的请求对系统压力过大而引起的系统瘫痪(友好点比如直接返回相应的json或则页面提示用户访问高峰,稍后再试)

限流一般有三种: 计数器 、漏桶算法、令牌桶算

关于限流算法不是本文讨论范围,定义网上有大把介绍

1.先说下nginx里面配置直接返回json如何操作。

   location /json/ {default_type application/json;add_header Content-Type 'text/html; charset=utf-8';return 200 '{"code":"6666,"msg":"访问高峰期..."}';}

Nginx限流配置

#限流
limit_req_zone $binary_remote_addr zone=myRateLimit:10m rate=2r/s;location / { #限流limit_req zone=myRateLimit burst=2 nodelay;root   html;index  index.html index.htm;}

名词解释:

第1个参数:limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。
第2个参数:Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,所以示例中区域可以存储160000个IP地址。
第3个参数:Rate定义最大请求速率。示例中速率不能超过每秒2个请求。

超过限流,默认返回503状态

然后我们在503错误页面配置返回相应json或者html页面即可。这里我们返回json

error_page 503 /503;location = /503 {default_type application/json;add_header Content-Type 'text/html; charset=utf-8';return 200 '{"code":"6666,"msg":"访问高峰期..."}';}

展示结果如下

正常返回结果

限流后返回结果

至此nginx限流搞定

转载于:https://my.oschina.net/likaixuan0/blog/3046532

nginx 限流,以及nginx直接返回json格式数据相关推荐

  1. 返回json格式数据乱码

    本文为博主原创,未经允许不得转载: 原本返回json格式数据的代码: @ResponseBody@RequestMapping(value = "getListByTime", m ...

  2. Spring MVC--使用Jackson返回JSON格式数据

    使用Jackson返回JSON格式数据 index.jsp <%@ page language="java" contentType="text/html; cha ...

  3. 使用jQuery发送POST,Ajax请求返回JSON格式数据

    问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...

  4. Flask设置返回json格式数据

    https://blog.csdn.net/angus_17/article/details/80455838 from flask import Flask, jsonifyapp = Flask( ...

  5. django mysql返回json_Django 1.8.11 查询数据库返回JSON格式数据

    Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...

  6. ajax返回数据输出成表,javascript代码实例教程-ajax请求返回Json格式数据如何循环输出成table形式...

    小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过. 首先,Ajax请求数据,(用的是Jquery的Ajax) [javascript] $(function(){ ...

  7. java 返回 json格式_java 如何返回json格式数据,需要技巧

    今天上午给同事调了半个小时的程序,最后发现是在后台代码的java返回json格式的数据出了个错误.因此就想到了广大的初学者一开始学习jquery的时候可能会遇到这个问题.现在我就把我的给大家分享一下, ...

  8. (八): 查询结果直接返回Json格式数据

    Bee简单易用:单表操作.多表关联操作,可以不用写sql,极少语句就可以完成SQL操作:10分钟即可学会使用. Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化. ...

  9. JAVA中返回json格式数据

    1. 返回json格式 package com.demo.util;import com.alibaba.fastjson.JSONObject;import java.util.HashMap; i ...

最新文章

  1. 云终端处理器——Atom
  2. 每日一皮:很多时候你和Bug就像这样!
  3. 【Android 逆向】类加载器 ClassLoader ( Android 的八种类加载器 | ClassLoader | BaseDexClassLoader | DexClassLoader )
  4. android:shareduserid获取资源,关于 android:sharedUserId=android.uid.system
  5. STDIN_FILENO和stdin区别
  6. Spring boot的put请求
  7. Exchange 退信550 5.1.11 RESOLVER.ADR.ExRecipNotFound
  8. 检查Red Hat JBoss BRMS部署架构的规则和事件(第二部分)
  9. qt android文件读写文件,qt android 开发之写入xml配置文件篇
  10. C++设计模式-模板方法模式
  11. springboot 日志_Springboot与日志
  12. JS实现的一个验证码,可以在前端验证后在提交action
  13. 历史首次!中国联通、中国电信组队了,只为达成这个目的
  14. python 使用 config 文件
  15. 微信小程序 - 列表并列多排显示
  16. 中仪股份管道机器人_中仪股份 X5-HT 管道CCTV检测机器人
  17. js传递参数时类型错误
  18. 关于浏览器显示出现中文乱码问题(已解决)
  19. mysql中的round函数(*)
  20. Mac Webpack Vue项目的搭建

热门文章

  1. c\c++ 随机数函数
  2. 昨天服务器出现问题,解决过程如下所述
  3. UA MATH563 概率论的数学基础 鞅论初步4 Radon-Nikodym定理,条件期望的存在唯一性
  4. UA MATH566 一个例子:什么是隐状态
  5. [Codeforces741D]Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths——dsu on tree
  6. java 图片上传
  7. MyBatis自动生成代码之generatorConfig配置文件及其详细解读
  8. [JLOI 2012]树
  9. pat1003 迪杰斯特拉法和dfs求最短路
  10. 将字符串中的URL 解析,获取内容