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:限流缓存黑白名单等功能详解!
一、静态代理
二、负载均衡
1、轮询
2、加权轮询
3、ip_hash(源地址哈希法)
4、随机
5、least_conn(最小连接数法)
三、限流
1、配置参数
2、设置限流
四、缓存
1、浏览器缓存,静态资源缓存用expire。
2、代理层缓存
五、黑白名单
1、不限流白名单
2、黑名单
个人博客网站:https://programmerblog.xyz
以上是关于nginx 限流功能的主要内容,如果未能解决你的问题,请参考以下文章