编程技术分享平台

网站首页 > 技术教程 正文

Nginx中设置客户端下载的连接并发数

xnh888 2024-09-28 02:59:42 技术教程 30 ℃ 0 评论

部署在服务器上的前端项目的服务是 由nginx代理的,最近在等保三级-Nginx合规基线扫描的时候有一个当通信双方中的一方在一段时间内未作任何响应,另一方应能够自动结束会话的检查项,按照修复建议将其他修复项在nginx.conf配置文件中配置以后都正常,唯独

location / { 
limit_conn one 1; 
#限制每个ip只能发起一个并发连接,one为变量需在http段配置的limit_conn_zone对应的变量
#limit_rate 20k; #限制每个连接的限制速度为20K,IP的下载速度为连接数*限制速度 
} 

这一个配置在重启Nginx的时候报错:zero size shared memory zone one,我看网上说的去掉他就不报错了,我要是去掉他可以我还加他干什么??后来通过官方文档http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html 一步一步了解了每个参数的含义,才知道我的变量没有配置。接下来事我根据官方文档总结的一部分内容,纪录下来,希望以后对大家和工作有所帮助

ngx_http_limit_conn_module指令解释

limit_conn_zone
语法: limit_conn_zone $variable zone=name:size;
默认值: none
配置段: http
该指令描述会话状态存储区域。键的状态中保存了当前连接数,键的值可以是特定变量的任何非空值(空值将不会被考虑)。$variable定义键,zone=name定义区域名称,后面的limit_conn指令会用到的。size定义各个键共享内存空间大小。如:

limit_conn_zone $binary_remote_addr zone=one:10m;

注释:客户端的IP地址作为键。注意,这里使用的是$binary_remote_addr变量,而不是$remote_addr变量。
$remote_addr变量的长度为7字节到15字节,而存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节。
$binary_remote_addr变量的长度是固定的4字节,存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节。
1M共享空间可以保存3.2万个32位的状态,1.6万个64位的状态。
如果共享内存空间被耗尽,服务器将会对后续所有的请求返回 503 (Service Temporarily Unavailable) 错误。
limit_zone 指令和limit_conn_zone指令同等意思,已经被弃用,就不再做说明了。

limit_conn_log_level
语法:limit_conn_log_level info | notice | warn | error
默认值:error
配置段:http, server, location
当达到最大限制连接数后,记录日志的等级。

limit_conn
语法:limit_conn zone_name number
默认值:none
配置段:http, server, location
指定每个给定键值的最大同时连接数,当超过这个数字时被返回503 (Service Temporarily Unavailable)错误。如:

server {
    location {
        limit_conn one 1;
    }

这样变量设置变量以后再重启Nginx 成功。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表