设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
快捷导航
发布信息
搜索
搜索
首页
优惠促销
云服务器
独立服务器
站群服务器
母鸡服务器
服务器托管
全球云服务器
技术文档
联系
每日签到
本版
文章
帖子
用户
主机测评网
»
论坛
›
技术文档
›
其他教程
›
Nginx限制访问频率、下载速率和并发连接数教程 ...
返回列表
发新帖
Nginx限制访问频率、下载速率和并发连接数教程
[复制链接]
|
主动推送
186
|
0
|
2024-9-11 18:08:01
|
显示全部楼层
|
阅读模式
Nginx是一款常用的网站管理程序,在Windows系统服务器和Linux系统服务器中都可以安装。在Nginx使用过程中,为了避免一些网站占用过多资源,出现分配不均的现象,就需要限制访问频率、下载速率和并发连接数。下面是具体教程:
一、 限制访问频率、并发连接、下载速度用到的模块和指令概述
?ngx_http_limit_req_module :用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”
?ngx_http_limit_conn_module :用来限制同一时间连接数,即并发限制
?limit_rate和limit_rate_after :下载速度设置
漏桶算法(leaky bucket)
算法思想是:
?水(请求)从上方倒入水桶,从水桶下方流出(被处理)
?来不及流出的水存在水桶中(缓冲),以固定速率流出;
?水桶满后水溢出(丢弃)。
?这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃。
?Nginx按请求速率限速模块使用的是漏桶算法,即能够强行保证请求的实时处理速度不会超过设置的阈值
二、限制URL访问请求频率
http{
...
limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s;
limit_req_zone $binary_remote_addr $uri zone=two:30m rate=20r/s;
limit_req_zone $binary_remote_addr $request_uri zone=three:30m rate=20r/s;
limit_req_status 444;
...
server{
...
limit_req zone=two burst=15 nodelay;
...
}
}
解释:
limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s;
?$binary_remote_addr 是限制同一客户端ip地址不同URL
?zone:区域名one 存放session30M
?rate: 每秒钟请求数
limit_req_zone $binary_remote_addr $uri zone=two:30m rate=20r/s;
?$binary_remote_addr $uri 是限制同一客户端ip地址 相同URL
?zone:区域名two 存放session30M
?rate: 每秒钟请求数
limit_req_zone $binary_remote_addr $request_uri zone=three:30m rate=20r/s;
?$binary_remote_addr $request_uri 是限制同一客户端ip地址 相同URL
?zone:区域名two 存放session30M
?rate: 每秒钟请求数
limit_req zone=two burst=15 nodelay;
?zone引用 区域为two,
?burst 设置一个大小为15的缓冲区,当有大量请求(爆发)过来时,访问超过了上面的限制可以先放到缓冲区内。
?nodelay 一般是和burst一起使用的,如果设置了nodelay,当访问超过了频次而且缓冲区也满的情况下会直接返回503,如果设置了,则所有大的请求会等待排队
三、并发连接数限制
案例一:
http {
...
limit_conn_log_level error;
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn_status 503;
...
server {
...
location /download/ {
limit_conn addr 1; 单个客户端IP限制为1
}
...
}
案例二:
http{
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
...
limit_conn perip 10; #单个客户端ip与服务器的连接数
limit_conn perserver 100; #限制与服务器的总连接数
}
}
四、限制下载速度
location /download {
limit_rate 128k;
}
#如果想设置用户下载文件的前10m大小时不限速,大于10m后再以128kb/s限速可以增加以下配内容
location /download {
limit_rate_after 10m;
limit_rate 128k;
}
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
综合其他发布
其他文档
王俊杰2017
127
主题
-1
回帖
10
积分
新手上路
新手上路, 积分 10, 距离下一级还需 40 积分
新手上路, 积分 10, 距离下一级还需 40 积分
积分
10
加好友
发消息
回复楼主
返回列表
网络技术教程
软件使用教程
Windows教程
Centos教程
Ubuntu教程
Linux其他教程
综合教程
其他教程
其他文档
服务器商家推荐
华夏互联
蓝速云
米图云
全球云
文章
1
苹果电脑MAC系统登录Windows远程桌面
2
Debian拓展硬盘工具。cloud-utils-growpart、xfsprogs
3
安卓Android手机怎么使用V2rayNG?
4
WINDOWS系统电脑怎么使用WINXRAY?
5
notepad++.8.5.7编辑器,代码编辑器
6
DirectX修复工具增强版_V4.3.0.40864版本DLL修复工具C++安装
7
Visual C++运行库合集包完整版VisualCppRedist_AIO_x86_x64
8
ChromeSetup谷歌浏览器一键安装