nginx limit配置参数解读

本文主要解析一下ngx_http_core_module、ngx_http_limit_conn_module以及ngx_http_limit_req_module中的limit相关配置参数。

limit_rate

名称

默认配置

作用域

官方说明

中文解读

模块

limit_rate

limit_rate 0;

http, server, location, if in location

Limits the rate of response transmission to a client. The rate is specified in bytes per second. The zero value disables rate limiting. The limit is set per a request, and so if a client simultaneously opens two connections, the overall rate will be twice as much as the specified limit.

指定每秒该连接能下载的bytes,主要用来限制个别请求的带宽

ngx_http_core_module

limit_rate_after

limit_rate_after 0;

http, server, location, if in location

Sets the initial amount after which the further transmission of a response to a client will be rate limited.

设置多少bytes过后将启动limit计数,如果小于此值则不限速

ngx_http_core_module

limit_except

没有默认值

location

Limits allowed HTTP methods inside a location. The method parameter can be one of the following: GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, or PATCH. Allowing the GET method makes the HEAD method also allowed

设置除了指定的http methods外其他method将被限制,允许GET就自动允许HEAD方法

ngx_http_core_module

  • 实例 location /downloads { limit_rate_after 1m; limit_rate 500k; } location / { proxy_pass http://localhost:3000; limit_except GET { deny all; } }

limit_conn

名称

默认配置

作用域

官方说明

中文解读

模块

limit_conn

没有默认值,语法 limit_conn zone number;

http, server, location

Sets the shared memory zone and the maximum allowed number of connections for a given key value. When this limit is exceeded, the server will return the error in reply to a request.

指定一个zone的每个key最大连接数

ngx_http_limit_conn_module

limit_conn_zone

没有默认值,语法 limit_conn_zone key zone=name:size;

http

Sets parameters for a shared memory zone that will keep states for various keys. In particular, the state includes the current number of connections. The key can contain text, variables, and their combination. Requests with an empty key value are not accounted.

第一个参数是key,第二个参数是指定zone及其存放元数据(key,current num of conns per key,zone size)的共享内存大小

ngx_http_limit_conn_module

limit_conn_log_level

limit_conn_log_level error;

http, server, location

Sets the desired logging level for cases when the server limits the number of connections. This directive appeared in version 0.8.18.

指定当触发limit的时候日志打印级别

ngx_http_limit_conn_module

  • 实例 http { limit_conn_zone $binary_remote_addr zone=ips:10m; limit_conn_zone $server_name zone=servers:10m; limit_conn_log_level notice; server { # these limits apply to the whole virtual server limit_conn ips 10; # only 1000 simultaneous connections to the same server_name limit_conn servers 1000; } }

limit_req

名称

默认配置

作用域

官方说明

中文解读

模块

limit_req

没有默认值,语法 limit_req zone=name [burst=number] [nodelay];

http, server, location

Sets the shared memory zone and the maximum burst size of requests. If the requests rate exceeds the rate configured for a zone, their processing is delayed such that requests are processed at a defined rate. Excessive requests are delayed until their number exceeds the maximum burst size in which case the request is terminated with an error.

指定zone的burst大小

ngx_http_limit_req_module

limit_req_zone

没有默认值,语法 limit_req_zone key zone=name:size rate=rate;

http

Sets parameters for a shared memory zone that will keep states for various keys. In particular, the state stores the current number of excessive requests. The key can contain text, variables, and their combination. Requests with an empty key value are not accounted.

第一个参数指定key,第二个参数指定zone名称和元数据的内存大小,第三个参数rate指定单位时间的请求数阈值

ngx_http_limit_req_module

limit_req_log_level

limit_req_log_level error;

http, server, location

Sets the desired logging level for cases when the server refuses to process requests due to rate exceeding, or delays request processing. Logging level for delays is one point less than for refusals.

指定触发req limit时打印的日志级别

ngx_http_limit_req_module

  • 实例 http { limit_req_zone $binary_remote_addr zone=myreqzone:10m limit_req_log_level warn; server { ## 每个ip限定10个连接数 ## 正常一个浏览器给每个host开两到三个连接 ## 触发的话会返回503 ## nodelay表示一上来就直接计算,不经过一些预热后再计算 limit_req zone=myreqzone burst=10 nodelay; } }

doc

  • ngx_http_core_module
  • ngx_http_limit_conn_module
  • ngx_http_limit_req_module

原文发布于微信公众号 - 码匠的流水账(geek_luandun)

原文发表时间:2018-01-05

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏liulun

Nim语言的模块化编程

前言 Nim支持把一大段程序分成若干个模块 一个模块就是一个源代码文件 每个模块都拥有它自己的名称空间 模块化可以起到封装(信息隐藏)和分步编译的作用 一个模块...

38970
来自专栏前端小叙

koa2使用注意点总结

get请求,ajax传入参数 获取的时候为ctx.request.query.参数名

10620
来自专栏积累沉淀

干货--Redis 30分钟快速入门

一、 redis环境搭建 1.简介        redis是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅...

337100
来自专栏xingoo, 一个梦想做发明家的程序员

Grunt-cli的执行过程以及Grunt加载原理

通过本篇你可以了解到: 1 grunt-cli的执行原理 2 nodeJS中模块的加载过程 Grunt-cli原理 grunt-cli其实也是Node模块,它可...

27380
来自专栏C/C++基础

C/C++头文件的作用和用法

示例代码编译运行环境:Windows 64bits+VS2017+Debug+Win32。

12210
来自专栏虚拟化云计算

OpenStack数据库远程对象模型

在OpenStack的各个服务之间有些数据库对象是远程操作的,远程对象所实现的效果是:一个 A 服务中的远程对象实例,可以由消息队列传送到B 服务,B 服务能够...

12420
来自专栏前端小叙

koa2入门学习

koa模块 koa-route 路由 route.get("路径",路由函数) koa-static 静态资源加载     const serve(路径) k...

35980
来自专栏木木玲

设计模式 ——— 职责链模式

15330
来自专栏null的专栏

Linux C 编程——多线程

线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。与多进程相比,多进程具有多进程不具备的一些优点,其最重要的是:对于多线程来说,其能够比多进程更加节省...

38660
来自专栏爱撒谎的男孩

用户管理模块之用户登录

28030

扫码关注云+社区

领取腾讯云代金券