nginx并发连接控制模块ngx_http_limit_conn_module

模块: ngx_http_limit_conn_module

作用: 根据定义的key限制并发连接数

配置示例:

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        location /api/ {
            limit_conn addr 10;
            limit_conn_status 503;
        }
    }
}

  

说明: 示例中定义key(zone=addr)为addr,分配内存大小为10m(zone=addr:10m)(如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503),同一个ip($binary_remote_addr)和服务器连接超过10个(limit_conn addr 10)将会被拦截并返回503(limit_conn_status 503)错误码

涉及指令:

  limit_conn_zone 

  limit_conn

  limit_conn_status

  limit_conn_log_level

指令详解:

limit_conn_zone

语法: limit_conn_zone key zone=name:size;(设置限制规则、区域名称及分配的内存大小)
可配置区域: http

key: 必选项;设置限制规则;取值可以是text文本、nginx变量或两者的组合;实例中使用的nginx变量$binary_remote_addr表示根据每个ip限制并发

name: 必选项; 自定义一个区域名称; 任意字符串

size: 分配内存的大小

 

limit_conn 

语法: limit_conn zone number; (使用由limit_conn_zone定义的拦截规则, 并设置具体的限制连接数量)
可配置区域: http, server, location

zone: 必选项; 由limit_conn_zone(zone=name)定义的名称; 表示使用定义的哪个限制规则

number: 必选项; 正整数; 表示具体的限制连接数量
limit_conn_status 

语法: limit_conn_status code;
默认值: 503
可配置区域: http, server, location

表示超出limit_req配置的请求数量后返回给客户端的错误码使用该指令最低版本 1.3.15

  

limit_conn_log_level 

语法: limit_conn_log_level info | notice | warn | error;
默认值: limit_conn_log_level error;
可配置区域: http, server, location

当服务器拒绝处理由于速率超过或延迟请求处理而拒绝处理请求时,设置所需的日志记录级别。

最低版本: 0.8.18

  

  

  

 

时间: 2024-10-29 04:44:22

nginx并发连接控制模块ngx_http_limit_conn_module的相关文章

Nginx并发连接限制

转载自:http://www.abc3210.com/2013/web_04/82.shtml HttpLimitReqModul用来限制单位时间内连接数的模块,使用limit_req_zone和limit_req指令配合使用来达到限制.一旦并发连接超过指定数量,就会返回503错误. HttpLimitConnModul用来限制单个ip的并发连接数,使用limit_zone和limit_conn指令. 这两个模块的区别前一个是对一段时间内的连接数限制,后者是对同一时刻的连接数限制. http{

nginx 并发设置

一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8). 2.  worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到

Apache与Nginx的优缺点 nginx并发胜出

   nginx的优点 a)轻量级,同样起web 服务,比apache 占用更少的内存及资源 b.)抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 c.)高度模块化的设计,编写模块相对简单 d.)社区活跃,各种高性能模块出品迅速啊 apache 的优点 a.)rewrite ,比nginx 的rewrite 强大 b.)模块超多,基本想到的都可以找到 c.)少bug ,nginx 的bug 相对较多 d)超稳定  最核心的

nginx 并发数问题思考:worker_connections,worker_processes与 max clients

我相信,很多人都跟我一样,看书都不会太细致也不太认真思考,感觉书中讲的东西都应该是对的,最近读书时我发现以前认为理所当然的东西事实上压根都没有弄明白,最终的结果是,书是别人的,书中的知识也是别人的. 无论是看过的nginx有关书还是网上看到的有关nginx 配置说明的文章(http://wiki.nginx.org/EventsModule#worker_connections),无一例外,在讲 到 worker_connections 和 max_clients这两个概念的关系时都一致的一笔带

nginx 并发数问题思考:worker_connections,worker_processes与

原文http://liuqunying.blog.51cto.com/3984207/1420556 我相信,很多人都跟我一样,看书都不会太细致也不太认真思考,感觉书中讲的东西都应该是对的,最近读书时我发现以前认为理所当然的东西事实上压根都没有弄明白,最终的结果是,书是别人的,书中的知识也是别人的. 无论是看过的nginx有关书还是网上看到的有关nginx 配置说明的文章(http://wiki.nginx.org/EventsModule#worker_connections),无一例外,在讲

Nginx优化——连接超时,进程管理,压缩,防盗链(二)

Nginx实现连接超时 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间 使用fiddler工具查看connection参数 超时参数 Keepalive_timeout设置连接保持超时时间,一般可只设置该参数,默认为65秒,可根据网站的情况设置,或者关闭,可在http段,server段,或者location段设置Client_header_timeout指定等待客户端发送请求头的超时时间Client_body_timeout设置请求体

C#多线程环境下调用 HttpWebRequest 并发连接限制

.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows 7 下默认是2,在服务器操作系统上默认为10. 如果不修改这个并发连接限制,那么客户端同时可以建立的 http 连接数就只有2个或10个.对于一些诸如浏览器或网络蜘蛛的应用,2个或10个并发数量实在太少,大大影响应用的性能.之所以有这个并发连接限制,是因为 http 1.0 和 http 1.1 标准规定并发连接数最大为2. 不

erlang如何有效监听大量并发连接

看了erlang的一些开源网络框架RabbitMQ.Ranch,他们都使用多个进程同时accept一个socket.这种方式在使得socket端口监听的工作分担了更多的调度机会,但是,在erlang中,socket接受一个新连接后,如果想让另一个进程处理消息,就要显式的调用gen_tcp:controlling_process(Socket, Pid). 所以问题来了,erlang多个进程同时监听一个socket安全吗? 这种方式在早期的erlang是不安全的,但R11B03 版本之后,erla

多线程环境下调用 HttpWebRequest 并发连接限制

.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows  7 下默认是2,在服务器操作系统上默认为10. 如果不修改这个并发连接限制,那么客户端同时可以建立的 http 连接数就只有2个或10个.对于一些诸如浏览器或网络蜘蛛的应用,2个或10个并发数量实在太少,大大影响应用的性能.之所以有这个并发连接限制,是因为 http 1.0 和 http 1.1 标准规定并发连接数最大为2.