nginx 限流功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 限流功能相关的知识,希望对你有一定的参考价值。

参考技术A 最近老大布置任务,需要对网站进行限流,要求每个IP每秒只能访问1次。百度后,发现nginx的limit_req 命令基本可以满足我们的需求。

配置如下:

以上配置中使用的是nginx的ngx_http_limit_req_module模块,用来限制单个IP的请求数。

语法:limit_req_zone binary_remote_addr zone=mylimit:10m rate=1r/s;
说明:
1. $binary_remote_addr,表明是以remote_addr为限制目标,加上binary是为了压缩内存占用空间
2. zone=name:size,分配一个以name为名的并且大小为size的内存空间,用来存储访 问的频次信息
3. rate=rate, 如rate=1r/s表示同一个IP每秒只允许一个请求通过

语法:limit_req zone=name [burst=number] [nodelay | delay=number]; #放在location区域内
实例:limit_req zone=mylimit burst=5 nodelay;
说明:
1. zone=mylimit,对应http区域中配置的zone
2. burst=5,表示设置一个大小为5的缓冲区,超过频次限制的请求先放入这个缓冲区
3. nodelay,设置后超过频次限制以及缓冲区满了的情况下返回503状态码;如不设置,那么额外的请求将进入等待排队的状态

语法:limit_req_log_level info | notice | warn | error #可放入http, server, location区域
实例:limit_req_log_level error
说明:当超出限速及被缓存后,写入日志(对应相应的日志级别)

语法:limit_req_status code #可放入http, server, location区域
实例:limit_req_status 503
说明:自定义拒绝请求后返回的状态码

参考: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
https://www.cnblogs.com/biglittleant/p/8979915.html

Nginx:限流缓存黑白名单等功能详解!

Nginx应该是现在最火的web和反向代理服务器,没有之一。她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现。那除了负载均衡,它还有什么其他的用途呢,具体如下:

一、静态代理

Nginx擅长处理静态文件,是非常好的图片、文件服务器。把所有的静态资源的放到nginx上,可以使应用动静分离,性能更好。

二、负载均衡

Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照一定的策略转发到不同的服务器上,达到负载的效果。常用的负载均衡策略有
Nginx:限流、缓存、黑白名单等功能详解!

1、轮询

将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

2、加权轮询

3、ip_hash(源地址哈希法)

4、随机

通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。

5、least_conn(最小连接数法)

三、限流

Nginx的限流模块,是基于漏桶算法实现的,在高并发的场景下非常实用。
Nginx:限流、缓存、黑白名单等功能详解!

1、配置参数

2、设置限流

burst排队大小,nodelay不限制单个请求间的时间。

四、缓存

1、浏览器缓存,静态资源缓存用expire。

Nginx:限流、缓存、黑白名单等功能详解!

2、代理层缓存

Nginx:限流、缓存、黑白名单等功能详解!

五、黑白名单

1、不限流白名单

Nginx:限流、缓存、黑白名单等功能详解!

2、黑名单




个人博客网站:https://programmerblog.xyz


文章推荐







  
    
    
  





以上是关于nginx 限流功能的主要内容,如果未能解决你的问题,请参考以下文章

网站防刷限流

Nginx如何限流?

限流nginx接入层限流

使用 Nginx 限流

使用Nginx实现限流

Nginx限流和黑名单配置