Nginx配置——关于limit_conn_zone和limit_conn

Posted PHP架构

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx配置——关于limit_conn_zone和limit_conn相关的知识,希望对你有一定的参考价值。

上一篇我们讲到如何决策nginx的连接数,这一篇我们继续,讲讲当整体Nginx的连接数确定以后,与每一个server的连接数相关的设置参数。

1. limit_conn_zone指令

limit_conn_zone只能用在http段,例如:

http { limit_conn_zone $binary_remote_addr zone=addr:10m; server { listen 80; server_name www.tomener.com tomener.com; location / { root /var/www/tomener; index index.php index.html index.htm; limit_conn addr 5; #是限制每个IP只能发起5个连接 limit_rate 100k; #限速为 100KB/秒 } }}

分析:

Syntax: limit_conn_zone key zone=name:size;

对应关系:

key => $binary_remote_addr #二进制的IP地址name => addr #随便取的一个名字,比如,你可以取成abcsize => 10m #空间大小,这里是10兆

2. zone:共享内存空间,作用:保存每个key对应的连接数

3. size:共享内存空间大小,如1M、10M、100K

当共享内存空间被耗尽,服务器将会对后续所有的请求返回 503 (Service Temporarily Unavailable) 错误

2. limit_conn指令

Syntax: limit_conn zone number;Default: —Context: http, server, location

这里,小伙伴对这个zone估计还是有一些疑问,有疑问可以在下面评论,大家一起讨论,比如,有人可能会问,一个客服端占用5个,那么327680只能容纳65536个客服端,那么第65537个客服端就会返回503错误

3. limit_conn_log_level指令

Syntax: limit_conn_log_level info | notice | warn | error;Default: limit_conn_log_level error;Context: http, server, location

说明:当达到最大限制连接数后,记录日志的等级。

4. limit_conn_status指令

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

说明:当超过限制后,返回的响应状态码,默认是503,现在你就知道上面为什么会返回503(Service Temporarily Unavailable)服务暂时不可用

例子:

a、同时限制ip和虚拟主机最大并发连接

http { limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { location / { limit_conn perip 10; limit_conn perserver 1000; } }}

b、根据请求参数来限制

#请求:http://www.tomener.com/item.html?mp=1967464354&id=43566929485limit_conn_zone $mp_limit_key zone=mp:10m;
server {
set $mp_limit_key $binary_remote_addr; #key设置默认值 if ( $query_string ~ .*mp=(\d+).* ) { set $mp_limit_key $1; } location / { limit_conn mp 10; }}

5. ngx_http_limit_req_module

limit_req_zoneSyntax: limit_req_zone key zone=name:size rate=rate;Default: —Context: http

ngx_http_limit_req_module模块的使用和ngx_http_limit_conn_module模块差不多,这里暂时不在讲述,可查看官方文档(http://nginx.org/en/docs/http/ngx_http_limit_req_module.html)




以上是关于Nginx配置——关于limit_conn_zone和limit_conn的主要内容,如果未能解决你的问题,请参考以下文章

nginx v1.1.8新语法 limit_conn_zone 替换和 limit_conn 用法

nginx配置限制同一个ip的访问频率

Nginx 限制ip的访问频率

8.Nginx的请求限制( limit_conn_zone、 limit_conn、limit_req_zone、limit_req zone)

Nginx如何配置除某个IP之外,其他IP,同一IP访问频率限制为30次/每秒

nginx配置访问频率