本文说一下Nginx的资源限制相关
Nginx限流限速:限制某个用户在一定时间内产生的http请求
应用场景:
该模块用于限制每个定义密钥的请求处理速率,特别是来自单个IP地址的请求的处理速率。限制是使用“泄漏桶”方法完成的。
limit_req_zone key zone=name:size rate=rate;
limit_req zone=name [burst=number] [nodelay | delay=number];
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
...
server {
...
location /search/ {
limit_req zone=one burst=5 nodelay;
limit_req_status 503;
}
以上示例含义为:
设置区域部分:
调用部分:
你每秒可以访问到的页面是:burst+rate的数量
该模块用于限制每个已定义密钥的连接数,特别是来自单个 IP 地址的连接数。
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
...
location /download/ {
limit_conn addr 1;
}
该示例含义为:设置一个共享区域,名称为addr,大小为10m;根据这个区域设置每个ip的最大连接数为1 。
此模块的指令:
除此之外还可以定义下载速度,这个功能是使用的是ngx_http_core_module模块的limit_rate_after和limit_rate功能
location /flv/ {
flv;
limit_rate_after 500k;
limit_rate 50k;
}
此示例说明:你可以正常使用500k,当达到500k之后开始限速,速度为50k。
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=conn_one:10m;
server {
listen 80;
server_name test.yyang.com;
charset utf8,gbk;
limit_req zone=one burst=3 nodelay;
limit_conn conn_one 1;
limit_rate_after 50m;
limit_rate 100k;
limit_req_status 432;
error_page 500 502 503 @error_temp;
location @error_temp {
return 302 https://vip.yyang.com;
}
location / {
root /data;
index index.html;
}
}