云计算学习之路——Nginx流量控制
Nginx流量控制
文章目录
- Nginx流量控制
- 一、流量控制概念
- 二、Nginx流量限制实战
- 1、普通的nginx流量限制
- 2、基于代理的nginx流量限制
- 三、Nginx流量限制实战(基于代理的白名单的流量限制)
一、流量控制概念
流量控制:是Nginx中一个很实用的功能,我们可以用来限制用户在给定时间内http请求数量,可用作安全目的,比如减慢暴力破解速率,主要是为了保护上游服务器不被同时太多用户请求压垮。
nginx如何限流:Nginx的流量限制使用漏桶算法,该算法在通讯和分组交换计算机网络中广泛使用,用以处理带宽有限时的突发情况。就好比,向一个桶底漏水的水桶里倒水一样。如果桶口倒水的速率大于桶底的漏水速率,桶里面的水将会溢出;同样,在请求处理方面,水代表来自客户端的请求,水桶代表根据”先进先出调度算法”(FIFO)等待被处理的请求队列,桶底漏出的水代表离开缓冲区被服务器处理的请求,桶口溢出的水代表被丢弃和不被处理的请求。
流量限制通过ngx_http_limit_req_module模块实现
两个主要指令是 limit_req_zone和limit_req
limit_req_zone 定义流量限制相关的参数,通常在http块中定义,使其可以在多个上下文中使用。
limit_req 启用流量限制
limit_req_zone需要以下三个参数:
Key——定义应用限制的请求特征,$binary_remote_addr,以二进制的形式保存客户端IP地址。
Zone——定义用于存储每个IP地址状态以及被限制请求URL访问频率的共享内存区域。定义分为两个部分:通过zone=keyword标识区域的名字,以及冒号后面跟区域大小。
Rate——定义最大请求速率。
示例:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
这定义了流量限制,意思是定义了一个名字为mylimit大小为10M的区域,每个IP地址被限制为每秒只能请求10次,更准确地说,在前一个请求的100毫秒内不能请求该URL,$binary_remote_addr,以二进制的形式保存客户端IP地址。
二、Nginx流量限制实战
1、普通的nginx流量限制
环境:
两台虚拟机:
虚拟机1:服务端,安装nginx,完成流量限制配置。
虚拟机2:充当客户端,访问服务端,验证流量限制。
操作:
虚拟机1
1)安装并启动nginx
2)修改主配置文件nginx.conf,在http块中添加流量限制功能
[root@localhost ~]# vim /etc/nginx/nginx.conf
每个IP地址被限制为每秒只能请求1次,若一秒内请求多次将进行流量限制。
3)编写子配置文件limit.conf
[root@localhost ~]# vim /etc/nginx/conf.d/limit.conf
4)重新加载nginx的配置文件
[root@localhost ~]# nginx -s reload
5)创建默认发布目录以及网页内容,需与配置相对应
[root@localhost ~]# mkdir /limit
[root@localhost ~]# echo "limit,limit,limit" > /limit/index.html
虚拟机2
快速多次访问虚拟机1,验证流量限制
当快速访问服务器时,第一次正常,后面的访问速率超出了速率1r/sd的设置,显示503,说明流量限制配置成功
2、基于代理的nginx流量限制
环境:
三台虚拟机:
虚拟机1:服务端,安装nginx,充当真正的web服务。
虚拟机2:代理服务器,安装nginx,配置代理功能和流量限制功能。
虚拟机3:充当客户端,访问代理服务器,验证流量限制。
操作:
虚拟机1
1)安装并启动nginx
2)主配置文件内容,默认的就好
3)编写子配置文件limit.conf
[root@localhost ~]# vim /etc/nginx/conf.d/limit.conf
4)重新加载nginx的配置文件
[root@localhost ~]# nginx -s reload
5)创建默认发布目录以及网页内容,需与配置相对应
[root@localhost ~]# mkdir /limit
[root@localhost ~]# echo "limit,limit,limit" > /limit/index.html
虚拟机2
1)安装并启动nginx
2)修改主配置文件nginx.conf
[root@localhost ~]# vim /etc/nginx/nginx.conf
3)编写子配置文件
[root@localhost ~]# vim /etc/nginx/conf.d/proxy.conf
4)重新加载nginx的配置文件
[root@localhost ~]# nginx -s reload
虚拟机3
快速多次访问虚拟机2,验证基于代理的流量限制
当快速访问代理服务器时,第一次正常,后面的访问速率超出了速率1r/sd的设置,显示503,说明基于代理的流量限制配置成功
三、Nginx流量限制实战(基于代理的白名单的流量限制)
通过将基本的“流量限制”与Nginx的白名单功能配合使用,从而可以实现更细粒度的流量限制。
通过使用白名单功能,对任何不在白名单内的ip请求强制执行流量限制。
环境:
四台虚拟机:
虚拟机1:服务器端。安装nginx充当真正的web服务。
虚拟机2:代理服务器。安装nginx,配置代理功能,流量限制功能和白名单功能。
虚拟机3:充当白名单里允许的客户端,访问代理服务器,验证白名单流量限制。
虚拟机3:充当白名单以外的客户端,访问代理服务器,验证白名单流量限制。
虚拟机1
与上文的基于代理的流量限制一样,这里不再赘述。
虚拟机2
与上文的基于代理的流量限制一样,只需修改主配合文件nginx.conf
这个例子同时使用了geo和map指令。geo块将给在白名单中的IP地址对应的 $ limit变量分配一个值0,给其它不在白名单中的分配一个值1。然后我们使用一个map映射将这些值转为key,如下:
如果$ limit变量的值是0,$ limit_key变量将被赋值为空字符串
如果$ limit变量的值是1,$ limit_key变量将被赋值为客户端二进制形式的IP地址
两个指令配合使用,白名单内IP地址的$limit_key变量被赋值为空字符串,不在白名单内的被赋值为客户端的IP地址。当limit_req_zone后的第一个参数是空字符串时,不会启用“流量限制”功能,所以虚拟机3:192.168.58.155不会被限制。其它所有IP地址都会被限制到每秒只能有1个请求。
重新加载nginx的配置文件
[root@localhost ~]# nginx -s reload
虚拟机3
快速多次访问代理服务器虚拟机2,验证基于白名单的流量限制
虚拟机4
快速多次访问代理服务器虚拟机2,验证基于白名单的流量限制
云计算学习之路——Nginx流量控制相关推荐
- 云计算学习之路——LVS负载均衡
LVS 文章目录 LVS 一. 负载均衡集群介绍 1.集群是什么? 2.负载均衡集群技术 3.负载均衡集群技术实现方式和产品 4.负载均衡实现效果图 5.负载均衡分类 6.四层负载均衡与七层负载均衡的 ...
- 云计算学习之路—云计算基础—Linux系统基本操作
Linux系统基本操作 文章目录 Linux系统基本操作 一.基本命令 1.成分介绍 2.修改主机名 3.创建用户 4.修改用户密码 (1)root用户修改密码 (2)普通用户修改密码 5.用户切换 ...
- 云计算学习之路——文件服务NFS
文件服务--NFS 文章目录 文件服务--NFS 一.NFS介绍 二.原理 三.NFS服务部署 1.服务端 ① 关闭防火墙和selinux ②安装nfs和rpc服务 ③创建共享目录,并在目录下创建测试 ...
- Docker学习之路04:创建定制Nginx镜像
Docker学习之路04:创建定制Nginx镜像 Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学习之路03:Do ...
- Docker学习之路02:阿里云镜像加速器
阿里云镜像加速器 Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学习之路03:Docker的常用命令 Docker ...
- docker 虚拟机搭建mongodb一主一从一复制_云计算学习路线图素材课件:Docker容器应用场景分析...
Docker容器是一个开源的应用容器引擎,它能够自动执行重复性任务,例如搭建和配置开发环境,用户可以方便地创建和使用容器,还可以进行版本管理.复制.分享.修改.有很多初学云计算的同学不清楚Docker ...
- 小白怎么学习云计算?2020云计算学习大纲
当下,云计算产业高速发展,云计算可以实现信息资源的集中管理.按需供给."管家式"贴身服务和共享共创.在技术层面,互联网将为整个信息处理.资源采集和数据运算提供环境;在商业模式方面, ...
- My Plan——大数据学习之路
大数据学习之路 本文简介 相关书籍 计算机基础 数据结构与算法 计算机组成原理 操作系统 计算机网络 数据库 JAVA Python Linux 大数据 其他 本科专业课程安排 学习计划 计划 总结 ...
- 《程序员》5期全新改版,邀您踏上云计算应用之路!
本期封面报道:云计算应用之路 云计算,作为近年来广受关注的话题,其本质是一种灵活.高效.低成本.节能的信息运作方式,借助基于互联网的一系列创新技术,存储.计算.软件.管理.网络.信息等各类资源,以服务 ...
- alin的学习之路:面试题 计算机网络相关
alin的学习之路:面试题 计算机网络相关 介绍下proactor和reactor reactor:同步IO proactor:异步IO Reactor框架中用户定义的操作是在实际操作之前调用的.比如 ...
最新文章
- 线程调度 java_Java多线程--线程的调度
- qt 文件 时间 倒序排列_win7电脑敬业签便签软件分类标签里的内容如何按提醒时间排列?...
- python语言与c语言相比在分支结构上有什么不同_大工20春 C/C 语言程序设计 在线作业3 - 百度文库...
- boost::gil::threshold_truncate用法的测试程序
- C++运算符重载 实现有理数(分数)的加减法
- 老王学linux-ftp
- mybatis 多租户saas_彻底理解微商城多租户Saas架构设计
- o oia ospf 路由优先_CCNP理论之OSPF协议(二)
- springboot整合Apollo
- 从医疗数字化转型谈何为中台
- SQL Server 2017 AlwaysOn AG 自动初始化(七)
- 热血江湖游戏窗口化的方法
- multisim二极管_每日干货——光敏二极管传感器
- iOS开发-思维导图(初级)
- 浅析百度有啊生活平台未来发展的八大潜力特征
- 曙光服务器怎么进入bios_怎么进入bios,教您怎么进入bios
- 上班第一天(2)--一个程序员的成长史(11)
- PKI(公、私钥加密,数字签名、数字证书)技术理解
- python满天星效果图_客厅满天星地砖铺贴效果图 大厅瓷砖四角满天星造型图片...
- Spring Integration学习笔记:简介