nginx访问限制——连接限制

本文详细介绍了Nginx的ngx_http_limit_conn_module模块,用于限制每定义密钥的连接数,包括从单一IP地址的连接数。文章涵盖了设置共享内存区域、日志记录级别、状态码以及具体配置实例,帮助读者理解并应用Nginx的连接限制功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
模板: ngx_http_limit_conn_module
简介模板该ngx_http_limit_conn_module模块用于限制每个已定义密钥的连接数,特别是来自单个IP地址的连接数。 并非所有连接都被计数。仅当连接具有服务器正在处理的请求并且已经读取了整个请求标头时,才对连接进行计数。(只有当服务器正在处理请求并且已经读取了整个请求标头时,才会计算连接)


一、设置共享内存区域和给定键值的最大允许连接数

句法:	limit_conn_zone key zone=name:size;
默认:	-
内容:	http

在HTTP / 2和SPDY中,每个并发请求都被视为一个单独的连接。

HTTP1.0TCP不能复用
HTTP1.1顺序性TCP复用
HTTP2.0多路复用TCP复用

二、为服务器限制连接数的情况设置所需的日志记录级别。

句法:	limit_conn_log_level info | notice | warn | error;
默认:	limit_conn_log_level error;
内容:	http,server,location

该指令出现在版本0.8.18中。

三、设置以响应被拒绝的请求返回的状态码。

句法:	limit_conn_status code;
默认:	limit_conn_status 503;
内容:	http,server,location

该指令出现在1.3.15版中。



四、配置文件
在这里插入图片描述

http {
	limit_conn_log_level error;          #连接的错误日志级别
    limit_conn_status 503;               #连接错误返回的状态码
    limit_conn_zone $binary_remote_addr zone=one:10m;    #设置共享内存区域和给定键值的最大并发连接数  “none”为存储区名($binary_remote_addr = 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话 #在HTTP/2和SPDY中,每个并发请求被视为单独的连接.
    limit_conn_zone $server_name  zone=perserver:10m;    #设置共享内存区域和给定键值的最大允许—— (服务器连接数)

    server {
        listen       80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        include /etc/nginx/default.d/*.conf;
        location  /  {
                limit_conn one  1;      #最大并发连接数,每个客户端IP与服务器的连接也算一个连接数(每次只允许一个IP地址连接一次。)
                limit_conn perserver 1; #服务器总连接数不得超过个数,超过请求的会被拒绝(返回状态码503)
        }

重点思路哇(个人理解,如有错请指出来):

limit_conn_zone $binary_remote_addr zone=one:10m 定义限制客户端IP发起的请求数量(只要是个请求就算一个连接)

limit_conn_zone $server_name zone=perserver:10m 定义服务器自己允许的总的建立连接数量

现在明白了吗,双重限制哇,只要服务器限制的连接数量到了限制量就不接受任何连接。 接下来就是自己定义需求咯



官方提示limit_conn_zone :

在这里插入图片描述

二、测试
1)需要工具:ab
安装软件包: yum install httpd-tools -y

2)测试命令: ab -c 5 -n 100 http://ip.cip.cc/
注解:-c :并发量 -n:请求总数 ip.cip.cc: 外网IP地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值