目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7094.4k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(1.8k)
赞(0)

Nginx场景实践_限流实战

image-20211122174613504

根据nginx官网提供的说法,有两种算法,一种是漏桶算法,一种是令牌桶算法

  • limit_req_zone 用来限制单位时间内的请求数目,以及速度限制。
  • limit_req_conn 用来限制同一时间连接数,即并发限制。

Nginx限速配置指令

语法结构

放在http{} 内

参数解析:

  • 第一个参数:$binary_remote_addr 限制同一客户端ip地址。
  • 第二个参数:zone=mylimit:10m 用来存储访问的频次信息。
  • 第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的。

放在server{}内

参数:

  • 第一个参数:zone=one 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应。
  • 第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内。
  • 第三个参数:nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队。

%title插图%num

Nginx并发限制配置指令

ngx_http_limit_conn_module 提供了限制连接数的能力,利用 limit_conn_zone 和 limit_conn 两个指令即可。

语法结构

在需要 限制并发数下载带宽 的网站配置 server {}里加上如下代码:

参数说明:

补充说明下参数:

  • limit_conn perip 10 作用的key 是 $binary_remote_addr,表示限制单个IP同时最多能持有10个连接。
  • limit_conn perserver 100 作用的key是 $server_name,表示虚拟主机(server) 同时能处理并发连接的总数。

设置白名单

限流主要针对外部访问,内网访问相对安全,可以不做限流,通过设置白名单即可。利用 Nginx ngx_http_geo_module 和 ngx_http_map_module 两个工具模块即可搞定。

查看是否具有该功能

在 nginx.conf 的 http 部分中配置白名单:

参数:

  • geo 对于白名单(子网或IP都可以) 将返回0,其他IP将返回1。
  • map 将limit转换为 limit_key,如果是 $limit 是0(白名单),则返回空字符串;如果是1,则返回客户端实际IP。
  • limit_req_zone 限流的key不再使用 binary_remote_addr,而是limit_key 来动态获取值。如果是白名单,limit_req_zone 的限流key则为空字符串,将不会限流;若不是白名单,将会对客户端真实IP进行限流。

实时效果反馈

1. Nginx实现限流,limit_req_zone指令中rate=1r/s参数意思是____

A 每秒1次

B 每分1次

C 每秒20次

D 每分20次

答案

1=>A

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2