中limit怎末用_Nginx配置——关于limit_conn_zone和limit_conn

本文介绍了Nginx中用于限制客户端连接数的配置指令,包括limit_conn_zone、limit_conn、limit_conn_log_level和limit_conn_status。通过设置这些指令,可以控制每个IP地址或特定标识的最大并发连接数,当超出限制时,服务器将返回503错误。此外,还提及了ngx_http_limit_req_module模块,用于进一步的流量限制。
摘要由CSDN通过智能技术生成

上一篇我们讲到如何决策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兆

一个二进制的ip地址在32位机器上占用32个字节,在64位机器上占用63个字节,那么10M可以存放多少呢,计算一下,10x1024x1024/32 = 327680,意思就是可以存放326780个ip地址(32位),64位可以存放163840个ip

1. key:键,可以说是一个规则,就是对客服端连接的一个标识,比如上面用的是IP地址,我们也可以用$query_string,例如: /index.php?mp=138944093953,那我们就可以根据mp的值来限制连接数,更多的nginx内置变量请查看http://nginx.org/en/docs/varindex.html

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

限制每个name对应客服端的连接数,比如上面的limit_conn addr 5;意思就是现在addr这个name对应的客服端的连接数,比如name对应的是45.168.68.202这个ip地址,那么这个ip最多有5个并发连接,那什么并发呢?像这样的连接,请求到达并已经读取了请求头信息到响应头信息发送完毕,在这个过程中的连接,当一个客服端的并发连接达到我们设置的5个以上时,会返回503 (Service Temporarily Unavailable) 错误

这里,小伙伴对这个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)

3229c2b254e56b132b4737c73c44495b.gif

cb39b9026a255685ee0d2fa23c517c71.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值