IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> nginx-nginx限流 -> 正文阅读

[系统运维]nginx-nginx限流

1. 配置参数

在nginx.conf配置文件中的http模块下添加:

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

2. 设置限流

  • 1. 在location中添加:limit_req zone=serverRateLimit;
location / {
   proxy_pass http://myserver ;
   limit_req zone=serverRateLimit;
}

?上述配置,Nginx 实际上以毫秒为粒度来跟踪请求信息,因此 10r/s 实际上是限制:每100毫秒处理一个请求。这意味着,相邻两个请求间的相隔时间不小于100毫秒,如果第一次请求完后,100毫秒内第二个请求过来,将拒绝处理该请求。

  • 2. 在location中添加:limit_req zone=serverRateLimit burst=5;

location / {
   proxy_pass http://myserver ;
   limit_req zone=serverRateLimit burst=5;
}

burst为排队大小。实际中请求频次都是不均衡的请求,不可能一个客户端ip均衡的每100毫秒请求一次,可能在100毫秒内请求多次,也可能200毫秒请求一次。如果出现了100毫秒内多次请求,那么设置burst后,那么在burst限定的范围内,会把突发过来的请求缓存到队列中,排队处理 ,不回立即返回错误响应。这样处理对客户不太友好,因为最后一次进入排队等待请求的客户等待很久才会有响应。

  • 3. 在location中添加:limit_req zone=serverRateLimit burst=5 nodelay;
location / {
   proxy_pass http://myserver ;
   limit_req zone=serverRateLimit burst=5 nodelay;
}

上述3中的配置比2中多了个nodeplay,无延迟处理的意思。当100毫秒内多次请求时,且不超过5次,那么100毫秒内的这5次请求会被并发处理,立即做出响应,而不是排队等待被处理。多于5次的会被立即响应错误状态。这样对客户是比较友好的。

3. 响应错误结果的处理

默认的是错误页的响应,即html文本的响应。如果有需求,可以替换为json响应来适配应用服务的响应。

# html响应
error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
}



# json响应
error_page 500 502 503 504 /respon_500.json;
location = /respon_500.json {
     default_type application/json;
     return 403 '{"code":"500","status":"error","message":"Server Error"}';
}

参考:死磕nginx系列--nginx 限流配置 - biglittleant - 博客园

使用Nginx实现限流 - 简书?

使用Nginx实现限流 - 简书?

百度安全验证?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:32:30  更:2022-04-01 00:35:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:20:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码