<返回更多

Nginx配置:限制连接次数、每秒请求次数、下载速度

2023-04-28  今日头条  Git风去云往
加入收藏

Nginx是大家使用最多的高性能的HTTP和反向代理服务器了,为了防止网站被恶意攻击,我们可以对Nginx配置一些访问限制,比如限制每秒连接次数、每秒请求次数、下载速度等等。

限制连接数

首先需要定义限制连接区间:

limit_conn_zone $binary_remote_addr zone=testip:10m;

然后直接使用:

limit_conn testip 8;

上面配置代表单个ip的最大连接数为8。

限制请求数

先需要定义限制区域,再 http 加入以下配置:

limit_req_zone $binary_remote_addr zone=testip:10m rate=15r/s;

其中 testip 为区域名字,后面的 10m 代表记录的缓存最大内存

rate 代表访问频率限制,binary_remote_addr代表限制相同ip,相同ip每秒限制访问为15次 ,时间单位也可以为是m(分钟)。

然后在需要限制的 server 内加入以下配置来使用:

limit_req zone=testip burst=10 nodelay;

testip为之前取的限制区域名称,可自定义,

burst设置缓存区大小,当超过了访问频率时请求放置在此缓存区,

nodelay代表超过限制并且缓存区也满了就直接响应503,如果不加,请求会继续排队。

限制相同域名每秒只允许一个请求

http {

limit_req_zone $server_name zone=testip:10m rate=1r/s;

server {

location / {

limit_req zone=testip;

}

}

}

限制相同ip每秒只允许一个请求

http {

limit_req_zone $binary_remote_addr zone=testip:10m rate=1r/s;

server {

location / {

# 可以放在 http,server,location

limit_req zone=testip;

}

}

}

 

限制下载速度

即限制下载带宽

使用 limit_rate 可以限制下载的速度

server {

listen 80;

server_name xxx.com;

// 例如限制下载速度为500k

limit_rate 500k;

location / {

root html;

index index.html;

}

}

 

设置超过指定大小后限制

server {

// 下载速度超过500k则限制为10k

limit_rate 10k;

limit_rate_after 500k;

}

 

最大上传大小

限制最大上传大小可以避免别人恶意上传很大的文件而占用资源

在http加入如下配置来限制

client_max_body_size 100m;

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>