nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > nginx limit_conn

nginx 限速之limit_conn的使用

作者:木华思流年

通过nginx我们有三种限速方式分别是: 限制请求数(request),限制连接数(connection),限制响应速度(rate),本文就来介绍一下nginx 限速之limit_conn的使用,ngx_http_limit_conn_module 模块主要是用于根据特定的key来限制连接的数量,感兴趣的可以了解一下

在工作中经常会遇到用户大量请求某个接口和一些大流量的恶意攻击,可以通过nginx对同一个ip的连接数,请求,进行限制.

通过nginx我们有三种限速方式分别是: 限制请求数(request),限制连接数(connection),限制响应速度(rate),分别对应nginx的limit_req,limit_conn和limit_rate三个模块,limit_conn和limit_req模块类似,有许多指令组成一个大的模块,两个模块之间很多指令的命名方式和用法大同小异.

ngx_http_limit_conn_module 模块主要是用于根据特定的key来限制连接的数量,如根据ip地址来限制连接数.需注意的是并不是所有的连接都会被算入其中,只有当一个连接的整个请求头被读取并且已经被nginx服务器处理的时候才会被算入限制中.

1. ngx_http_limit_conn_module模块

1. limit_conn_zone 指令

#语法配置
Syntax: limit_conn_zone key zone=name:size;
Defaule: -
Context: http  #作用域

limit_conn_zone $binary_remote_addr zone=${name}:10m #示例

说明:

2. limit_conn指令

Syntax:  limit_conn zone number;  #语法
Default:
Context: http,server,location  #作用域

说明:

示例:

 limit_conn_zone $binary_remote_addr zone=addr:10m;
 ​
 server {
     location /download/ {
         limit_conn addr 1;
     }

3. limit_conn_log_level指令

Syntax:	limit_conn_log_level  info|notice|warn|error  #语法
Default:    limit_conn_log_level error;   #默认
Context:	http, server, location  #作用域

功能: 当达到最大限制规则的连接数后,记录日志的等级。会输出到error.log中而不是access.log,调成info的话会有较多的日志输出,需要额外注意硬盘容量等相关问题。

4.limit_conn_status指令

Syntax:	limit_conn_status code
Context:	http, server, location
Default:	limit_conn_status 503

功能:当超过限制规则后,返回的响应状态码,默认是503,如果是一些有特殊需求的场景,可以手动调整为403之类的状态码,需要注意的是并不是所有的状态码都可以使用,nginx官方限定状态码必须在400到599之间。

5.limit_conn_dry_run指令

 Syntax: limit_conn_dry_run on | off;
 Default:    limit_conn_dry_run off;
 Context:    http, server, location
 This directive appeared in version 1.17.6.

功能: dry_run模式的意义在于试运行而不对线上业务造成影响。设置为on之后,前面的limit_conn指令并不会真正生效,但是limit_conn_zone指令会生效,nginx会在内存中存储计算相关的数据.

到此这篇关于nginx 限速之limit_conn的使用的文章就介绍到这了,更多相关nginx limit_conn内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文