nginx限速怎么实现
发布时间 - 2023-05-16 00:00:00 点击率:次nginx限速可以通过 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块来实现限速的功能。
一、ngx_http_limit_conn_module :
该模块主要限制下载速度。
1、并发连接限制:
http
{
...
limit_conn_zone $binary_remote_addr zone=aming:10m;
...
server
{
...
limit_conn aming 10;
...
}
}
说明:首先用limit_conn_zone定义了一个内存区块索引aming,大小为10m,它以$binary_remote_addr作为key。
该配置只能在http里面配置,不支持在server里配置。
limit_conn 定义针对aming这个zone,并发连接为10个。在这需要注意一下,这个10指的是单个IP的并发最多为10个。2、速度限制:
location ~ /download/ {
...
limit_rate_after 512k;
limit_rate 150k;
...
}
说明:limit_rate_after定义当一个文件下载到指定大小(本例中为512k)之后开始限速;
limit_rate 定义下载速度为150k/s。
注意:这两个参数针对每个请求限速。二、ngx_http_limit_req_module:
该模块主要用来限制请求数。
1、limit_req_zone:
语法: limit_req_zone $variable zone=name:size rate=rate; 默认值: none 配置段: http 设置一块共享内存限制域用来保存键值的状态参数。 特别是保存了当前超出请求的数量。 键的值就是指定的变量(空值不会被计算)。 如limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 说明:区域名称为one,大小为10m,平均处理的请求频率不能超过每秒一次,键值是客户端IP。 使用$binary_remote_addr变量, 可以将每条状态记录的大小减少到64个字节,这样1M的内存可以保存大约1万6千个64字节的记录。 如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503 (Service Temporarily Unavailable)错误。 速度可以设置为每秒处理请求数和每分钟处理请求数,其值必须是整数, 所以如果你需要指定每秒处理少于1个的请求,2秒处理一个请求,可以使用 “30r/m”。
2、limit_req
语法: limit_req zone=name [burst=number] [nodelay];
默认值: —
配置段: http, server, location
设置对应的共享内存限制域和允许被处理的最大请求数阈值。
如果请求的频率超过了限制域配置的值,请求处理会被延迟,所以所有的请求都是以定义的频率被处理的。
超过频率限制的请求会被延迟,直到被延迟的请求数超过了定义的阈值,
这时,这个请求会被终止,并返回503 (Service Temporarily Unavailable) 错误。
这个阈值的默认值为0。如:
limit_req_zone $binary_remote_addr zone=aming:10m rate=1r/s;
server {
location /upload/ {
limit_req zone=aming burst=5;
}
}
限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个。
如果不希望超过的请求被延迟,可以用nodelay参数,如:
limit_req zone=aming burst=5示例:
http {
limit_req_zone $binary_remote_addr zone=aming:10m rate=1r/s;
server {
location ^~ /download/ {
limit_req zone=aming burst=5;
}
}
}设置白名单:
如果是针对公司内部IP或者lo(127.0.0.1)不进行限速,如何做呢?这就要用到geo模块了。
假如,预把127.0.0.1和192.168.100.0/24网段设置为白名单,需要这样做。
在http { }里面增加:
geo $limited {
default 1;
127.0.0.1/32 0;
192.168.100.0/24 0;
}
map $limited $limit {
1 $binary_remote_addr;
0 "";
}
原来的 “limit_req_zone $binary_remote_addr ” 改为“limit_req_zone $limit”
完整示例:
http {
geo $limited {
default 1;
127.0.0.1/32 0;
192.168.100.0/24 0;
}
map $limited $limit {
1 $binary_remote_addr;
0 "";
}
limit_req_zone $limit zone=aming:10m rate=1r/s;
server {
location ^~ /download/ {
limit_req zone=aming burst=5;
}
}
}
# nginx
# 并发
# 下载速度
# 设置为
# 键值
# 默认值
# 如果你
# 超过了
# 在这
# 可以用
# 这就
# 这两个
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在景安服务器上快速搭建个人网站?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Python结构化数据采集_字段抽取解析【教程】
如何用好域名打造高点击率的自主建站?
如何用AI帮你把自己的生活经历写成一个有趣的故事?
JavaScript如何实现路由_前端路由原理是什么
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何快速完成中国万网建站详细流程?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何在橙子建站中快速调整背景颜色?
如何快速打造个性化非模板自助建站?
Laravel如何升级到最新版本?(升级指南和步骤)
如何在阿里云完成域名注册与建站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
SQL查询语句优化的实用方法总结
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
香港网站服务器数量如何影响SEO优化效果?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Bootstrap CSS布局之列表
如何在阿里云虚拟主机上快速搭建个人网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Linux系统命令中screen命令详解
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
如何在Tomcat中配置并部署网站项目?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
java中使用zxing批量生成二维码立牌
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何在阿里云香港服务器快速搭建网站?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何正确选择百度移动适配建站域名?
如何基于云服务器快速搭建个人网站?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
香港服务器建站指南:免备案优势与SEO优化技巧全解析
jQuery 常见小例汇总
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法


limit_conn aming 10;
...
}
}
说明:首先用limit_conn_zone定义了一个内存区块索引aming,大小为10m,它以$binary_remote_addr作为key。
该配置只能在http里面配置,不支持在server里配置。
limit_conn 定义针对aming这个zone,并发连接为10个。在这需要注意一下,这个10指的是单个IP的并发最多为10个。