手把手教你Nginx常用模块详解之ngx_http_limit_conn_module(五)

简介: 手把手教你Nginx常用模块详解之ngx_http_limit_conn_module(五)

本专栏非常感谢大家得关注和支持,本人开源项目站点https://erosbt.com 将自己热爱与信仰的技术,持续不辍地传递。


Nginx专栏



一. 指令


ngx_http_limit_conn_module

该ngx_http_limit_conn_module模块用于限制每个定义密钥的连接数量,特别是来自单个IP地址的连接数量。


并非所有的连接都被计数。只有在服务器处理了请求并且已经读取了整个请求头时才计算连接。


二. 语法


句法: limit_conn号
默认:
语境: http,服务器,位置

设置给定键值的共享内存区域和最大允许连接数。超过此限制时,服务器将返回错误以回复请求。例如,指令

limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    location /static/ {
        limit_conn addr 1;
    }

一次只允许每个IP地址一个连接。

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

可能有几个limit_conn指令。例如,以下配置将限制每个客户端IP连接到服务器的数量,同时限制连接到虚拟服务器的总数:

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
    ...
    limit_conn perip 10;
    limit_conn perserver 100;
}

当且仅当limit_conn在当前级别上没有指令时,这些指令才从前一级继承。

句法: limit_conn_log_level信息&通知& 警告& 错误;
默认: limit_conn_log_level错误;
语境: http,服务器,位置

注:&替换成|

当服务器限制连接数时,设置所需的日志记录级别。

句法: limit_conn_status代码;
默认: limit_conn_status 503;
语境: http,服务器,位置

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

句法: limit_conn_zone key zone = name:size;
默认:
语境: HTTP

为共享内存区域设置参数,该区域将保留各种键的状态。特别是,该状态包含当前的连接数。该key可以包含文本,变量,他们的组合。不包括具有空键值的请求。


在版本1.7.6之前,一个key可能只包含一个变量。


用法示例:

limit_conn_zone $binary_remote_addr zone=addr:10m;


在这里,客户端IP地址作为关键。需要注意的是,而不是r e m o t e a d d r ,该 remote_addr,该remote

a

ddr,该binary_remote_addr变量在这里使用。该r e m o t e a d d r 变量的大小可以从 7 至 15 个字节而变化。存储状态在 32 位平台上占用 32 或 64 字节的内存,在 64 位平台上总是占用 64 字节。 remote_addr变量的大小可以从7至15个字节而变化。存储状态在32位平台上占用32或64字节的内存,在64位平台上总是占用64字节。remote

a

ddr变量的大小可以从7至15个字节而变化。存储状态在32位平台上占用32或64字节的内存,在64位平台上总是占用64字节。binary_remote_addr对于IPv4地址,变量的大小始终为4个字节,对于IPv6地址则为16个字节。存储状态在32位平台上始终占用32或64个字节,在64位平台上占用64个字节。一个兆字节的区域可以保持大约32000个32字节的状态或大约16000个64字节的状态。如果区域存储耗尽,服务器会将错误返回给所有其他请求。

句法: limit_zone name $variable size ;
默认:
语境: HTTP

该指令在版本1.1.8中已过时,并在版本1.7.6中被删除。应该使用改变语法的等效limit_conn_zone指令代替:

limit_conn_zone $variable zone=name:size; 


三. 示例


http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    ...
    server {
        ...
        location /download/ {
            limit_conn addr 1;
        }

以上更多详解请大家关注nginx官方网站https://nginx.org/en/docs/


    以上就是我们今天的教程,如果本文对你有所帮助,欢迎关注点赞,分享给您身边的朋友。您的鼓励就是对我的最大动力。

相关文章
|
1月前
|
应用服务中间件 nginx
Nginx安装nginx-rtmp-module模块
【2月更文挑战第4天】 nginx中的模块虽然就是类似插件的概念,但是它无法像VsCode那样轻松的安装扩展。 nginx要安装其它模块必须同时拿到nginx源代码和模块源代码,然后手动编译,将模块打到nginx中,最终生成一个名为nginx的可执行文件。
72 6
|
3月前
|
应用服务中间件 nginx
百度搜索:蓝易云【利用nginx内置ngx_http_mirror_module模块实现流量复制及流量放大】
以上就是使用Nginx内置 `ngx_http_mirror_module`模块实现流量复制和流量放大的简要示例。通过合理配置和利用该模块,可以实现更复杂的流量控制和调试需求。
55 1
|
3月前
|
应用服务中间件 nginx
百度搜索:蓝易云【HTTP请求是如何关联Nginx server{}块的?】
总结来说,Nginx中的 `server{}`块用于关联HTTP请求和虚拟主机,通过配置不同的 `server{}`块,可以实现多个域名或IP地址的请求分发和处理。这样,Nginx可以根据不同的请求来提供不同的服务和内容。
37 0
|
4月前
|
应用服务中间件 Linux nginx
nginx+nginx-http-flv-module
nginx+nginx-http-flv-module
178 1
|
2月前
|
缓存 负载均衡 应用服务中间件
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
68 1
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
|
5月前
|
负载均衡 Unix 应用服务中间件
深入解析HTTP反向代理:探索NGINX的神奇之处
深入解析HTTP反向代理:探索NGINX的神奇之处
|
5月前
|
负载均衡 Dubbo 应用服务中间件
Nginx系列教程(11) - HTTP动态负载均衡(一)
Nginx系列教程(11) - HTTP动态负载均衡(一)
61 0
|
2月前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
60 0
|
3月前
|
存储 应用服务中间件 nginx
Nginx模块开发:handler模块实现
Nginx模块开发:handler模块实现
27 0
|
3月前
|
存储 应用服务中间件 nginx
Nginx模块开发:模块结构的源码阅读以及过滤器(Filter)模块的实现
Nginx模块开发:模块结构的源码阅读以及过滤器(Filter)模块的实现
64 0