---Nginx可以通过实现流量控制(流控)来限制对服务器的访问并保护其免受过载的影响,限流有以下几种:

正常限制访问频率(正常流量)

突发限制访问频率(突发流量)

限制并发连接数

黑白名单配置


---正常限制访问频率(正常流量)

流量限制”配置两个主要的指令,limit_req_zone和limit_req,如下所示:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
server {
    location /login/ {
        limit_req zone=mylimit;
        proxy_pass http://my_upstream;
    }
}


---突发限制访问频率(突发流量)

location /login/ {
    limit_req zone=mylimit burst=20;
    proxy_pass http://my_upstream;
}


---限制并发连接数

#速率限流配置
limit_req_zone $binary_remote_addr zone=ipRateLimit:10m rate=2r/s;
#并发量限流-单个IP控制
limit_conn_zone $binary_remote_addr zone=perip:10m;
#并发量限流-整个服务控制
limit_conn_zone $server_name zone=perserver:10m;
server {
    listen       80;
    server_name  localhost;
    location ~ .*\.(woff|ico|css|js|gif|jpg|jpeg|png)$ {
    	root /usr/local/openrestyDir/pages/;
    }
    location /msitems/ {
        #限流配置
        #limit_req zone=ipRateLimit burst=5 nodelay;
        #并发量限流
        limit_conn perip 10;
        limit_conn perserver 100;
        root /usr/local/openrestyDir/pages/;
    }
}

上面配置了单个IP同时并发连接数最多只能10个连接,并且设置了整个虚拟服务器同时最大并发数最多只能100个链接。当然,只有当请求的header被服务器处理后,虚拟服务器的连接数才会计数。


---黑白名单

include blockip.conf;

# 屏蔽单个ip访问
deny IP;
# 允许单个ip访问
allow IP;
# 屏蔽所有ip访问
deny all;
# 允许所有ip访问
allow all;
#屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
deny 123.0.0.0/8
#屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令
deny 124.45.0.0/16
#屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令
deny 123.45.6.0/24


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回