nginx 带宽_nginx 限速

https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-http/​docs.nginx.com

实验记录:

先准备各种大小的文件

(用 dd if=/dev/zero of=100M.file bs=1M count=100 创建几个即可)

329435b4f84aeb4880c666896a0683c0.png

nginx 静态代理

server {
        listen 80;
        server_name x.x.x.x;
        root /var/www;
}

e52f66fe9d3614d2fd250ecaec9f58f3.png

限制连接数 Limiting the Number of Connections

先添加一个zone(10m的意义可以不管)

limit_conn_zone $binary_remote_addr zone=addr:10m;

http {    
        ...
        ...
        limit_conn_zone $binary_remote_addr zone=addr:10m;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

限制1个试试

server {
        listen 80;
        server_name 120.78.201.151;
        root /var/www;
        limit_conn addr 1;
}

生效

4e45b323dce6aa6c5a3d003b15b3b8f9.png

限制带宽 Limiting the Bandwidth

(针对每个连接而不是某ip)

server {
        listen 80;
        server_name 120.78.201.151;
        root /var/www;
        limit_conn addr 3;
        limit_rate 10k;
}

100069723ce033c87476f98bb570abc8.png

那么总的带宽限制就是两者相乘

更复杂的配置应该要结合路由,略过


以下可以忽略

限制频繁连接 Limiting the Request Rate

Rate limiting can be used to prevent DDoS attacks

(可以对付 ddos 攻击,但个人感觉大量的ddos没法对付)

http {    
        ...
        ...
        limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

}
server {
        ...
        limit_req zone=one;
}

这个用浏览器不方便测试(一秒一次),用python head测试下

import requests
import time

for x in range(0,10):
	res = requests.head('http://x.x.x.x/50M.file')
	print(res)
	time.sleep(0.1)

可以发现频繁的请求会导致 503

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值