Nginx之访问限制模块之 limit_conn 模块、limit_req 模块

经常会遇到这种情况,服务器流量异常,负载过大等等。对于大流量恶意攻击访问,会带来带宽的浪费,服务器压力,影响业务,往往考虑对同一个IP的连接数,请求数、进行限制。

一、ngx_http_limit_conn_module 模块

ngx_http_limit_conn_module 模块用于限制定义key在同一时间的并发连接数,特别是来自单个IP地址的连接数。并非所有连接都被计算在内,仅当连接已经读取了整个请求头时才计算连接。

用法:

该模块提供了四个指令,limit_conn_zone 、 limit_conn 、 limit_conn_log_level 、limit_conn_status

limit_conn_zone 指令

语法:   limit_conn_zone $variable zone=name:size; 
作用域:  http
功能:	定义了一个会话状态存储区域,里边记录会话状态的信息
说明:	$variable 使用Nginx内置变量作为键(一般经常使用客户端的IP地址作为键:① $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位的状态)。zone=name定义区域名称(名称随意起,在limit_conn配置项中调用时对应就好),
		size定义各个键共享内存空间大小。如果共享内存空间被耗尽,服务器将会对后续所有的请求返回 503 (Service Temporarily Unavailable) 错误。

limit_conn 指令

语法:   limit_conn zone_name number;
作用域:	http, server, location
功能:	使用由limit_conn_zone定义的拦截规则, 并设置具体的限制连接数量,当超过这个数字时返回503(Service )错误。即limit_conn是对某个在limit_conn_zone中
		定义的存储区域key对应的总的网络连接数进行限流。可以按照IP来限制IP维度的总连接数,或者按照服务域名来限制某个域名的总的连接数。
		(只有那些被nginx处理的且已经读取了整个请求头的请求连接才会被计数器统计)。
说明:	zone_name是上面 limit_conn_zone 中的zone定义的,即由limit_conn_zone(zone=name)定义的名称; 表示使用定义的哪个限制规则;number:正整数; 表示具体的限制连接数量

limit_conn_log_level 指令

语法:	limit_conn_log_level  info|notice|warn|error
作用域:	http, server, location
默认值:	limit_conn_log_level  error
功能:	当达到最大限制规则的连接数后,记录日志的等级。

limit_conn_status指令

语法:	limit_conn_status code
作用域:	http, server, location
默认值:	limit_conn_status 503
功能:	当超过限制规则后,返回的响应状态码,默认是503

配置

http{
      
    # http块中定义访问限制
    limit_conn_zone $remote_addr zone=conn_zone:10m;
  server{
    
    # server块中调用。连接限制,限制同时最高1个连接
    limit_conn conn_zone 1
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值