nginx限制连接数(ngx_http_limit_conn_module)模块

个人分类: nginx

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wanglei_storage/article/details/51076561

ngx_http_limit_conn_module 对于一些服务器流量异常、负载过大,甚至是大流量的恶意攻击访问等,进行并发数的限制;该模块可以根据定义的键来限制每个键值的连接数,只有那些正在被处理的请求(这些请求的头信息已被完全读入)所在的连接才会被计数。

该模块提供了两个配置参数,limit_conn_zone 和 limit_conn ,其中 limit_conn_zone 只能配置在 http{} 段,而 limit_conn 则可以配置于http{},server{},location{} 区段中。


第三方模块编译安装参数:


一、 limit_conn_zone

语法:limit_conn_zone $variable zone=name:size;  配置段:http

该指令描述会话状态存储区域。键的状态中保存了当前连接数,键的值可以是特定变量的任何非空值(空值不会被考虑)。$variable 定义键,zone=name 定义区域名称,主要作用与后面的 limit_conn。size 定义各个键共享内存空间大小,如:

注释:

客户端的IP地址作为键。注意,这里使用的是 binary_remote_addr 变量,而不是 remote_addr 变量。  remote_addr变量的长度为7字节到15字节,而存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节。  binary_remote_addr变量的长度是固定的4字节,存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节。  1M共享空间可以保存3.2万个32位的状态,1.6万个64位的状态。  如果共享内存空间被耗尽,服务器将会对后续所有的请求返回 503 (Service Temporarily Unavailable) 错误。


二、limit_conn

语法:limit_conn zone_name number  配置段:http,server,location

该指令指定每个给定键值的最大同时连接数,当超过这个数字时返回503(Service )错误。如(同一IP同一时间只允许有20个连接):


三、配置使用示例

limit_conn_zone $binary_remote_addr zone=showjoy_conn:20m;  主要用来定义变量、zone名称、共享内存大小

limit_conn showjoy_conn 20;  将前面定义的showjoy_conn进行配置,并且限制同一IP并发连接数为20


四、使用注意事项

事务都具有两面性的。ngx_http_limit_conn_module 模块虽说可以解决当前面临的并发问题,但是会引入另外一些问题的。如前端如果有做LVS或反代,而我们后端启用了该模块功能,那不是非常多503错误了?这样的话,可以在前端启用该模块,要么就是设置白名单。

模块地址:https://yunpan.cn/cqSKP6BrJ2AeT 访问密码 4f50

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后台及大数据开发

webService学习之路(二):springMVC集成CXF快速发布webService

继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家...

26820
来自专栏后台及大数据开发

多个SpringMVC项目配置统一管理(来自于springCloud的统一配置思路)

因公司项目分多个系统进行开发,而系统架构几乎完全一样,所以同样的配置文件会存在不同的系统中

46630
来自专栏后台及大数据开发

Restful 介绍及SpringMVC+restful 实例讲解

restful不是一个框架,称为一种编码更烦更贴切吧,其核心类位于spring-web.jar中,即RestTemplate.class

9820
来自专栏后台及大数据开发

【原生态】Http请求数据 与 发送数据

Http请求都是通过输入输出流来进行操作的,首先要制定GET或者POST,默认是GET,在安全和数据量较大情况下请使用post

15930
来自专栏后台及大数据开发

Nexus私服搭建使用及发布jar包到私服上供团队其他成员使用

1.下载maven解压到指定目录,并配置环境变量 M2_HOME为maven解压目录

19430
来自专栏后台及大数据开发

mybatis plugins实现项目【全局】读写分离

注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html

11030
来自专栏后台及大数据开发

RPC远程过程调用学习之路(一):用最原始代码还原PRC框架

RPC: Remote Procedure Call 远程过程调用,即业务的具体实现不是在自己系统中,需要从其他系统中进行调用实现,所以在系统间进行数据交互时经...

13230
来自专栏后台及大数据开发

shiro权限管理框架与springmvc整合

shiro是apache下的一个项目,和spring security类似,用于用户权限的管理‘

14410
来自专栏Android知识分享

Android技术选型:你该选择哪个网络请求开源库(Volley、OkHttp、Retrofit)?

19510
来自专栏后台及大数据开发

【tomcat】HTTPS访问配置 + restful调用远程HTTPS绕过验证

由于是本地测试,请修改本地host文件C:\Windows\System32\drivers\etc\host

20930

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励