本专栏非常感谢大家得关注和支持,本人开源项目站点https://erosbt.com 将自己热爱与信仰的技术,持续不辍地传递。
Nginx专栏
- 手把手教你Nginx常用模块详解之ngx_http_access_module(一)
- 手把手教你Nginx常用模块详解之ngx_http_addition_module(二)
- 手把手教你Nginx常用模块详解之ngx_http_api_module(三)
- 手把手教你Nginx常用模块详解之ngx_http_gzip_module(四)
- 手把手教你Nginx常用模块详解之ngx_http_limit_conn_module(五)
- 手把手教你Nginx常用模块详解之ngx_http_upstream_module(六)
- 手把手教你Nginx常用模块详解之ngx_stream_ssl_module(七)
- 手把手教你Nginx常用模块详解之ngx_stream_upstream_module(八)
- 手把手教你Nginx常用模块详解之ngx_http_perl_module(九)
- 手把手教你Nginx常用模块详解之ngx_http_rewrite_module(十)
- 手把手教你Nginx常用模块详解之ngx_http_status_module(十一)
一. 指令
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/