nginx 限流,以及nginx直接返回json格式数据
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格式数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓开发必备知识体系:安卓篇
- 下一篇: jenkins+github+docke