nginx限流实现方法

三种方式实现:
1 limit_conn_zone
2 limit_req_zone
3 ngx_http_upstream_module
前两种只能对客户端(即单一ip限流)
1 limit_conn_zone
http{
limit_conn_zone $binary_remote_addr zone=one:10m;
server
{
limit_conn one 10;.
}
}
其中“limit_conn one 10”既可以放在server层对整个server有效,也可以放在location中只对单独的location有效
指客户端并发连接数只能是10个
主要用于设置用户并发连接数,一般用于服务器流量异常、负载过大,甚至是大流量的恶意攻击访问等场景。
2 limit_req_zone
http{
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
server
{
limit_req zone=req_one burst=120;
}
}
“limit_req zone=req_one burst=120”既可以放在server层对整个server有效,也可以放在location中只对单独的location有效
rate=1r/s的意思是每个地址每秒只能请求一次,也就是说令牌桶burst=120一共有120块令牌,并且每秒钟只新增1块令牌,120块令牌发完后,多出来的请求就会返回503
主要用于单个ip限流,限制单个ip的请求数,一般用于防止应用层的dos攻击,也可以被限制黑名单方式代替
3 ngx_http_upstream_module
upstream web{
server 192.168.x.x:8080 max_conns=10;
server 192.168.x.x:8080 max_conns=10;
}
第三种是对后端进行限流,比如后端只能承受5000个连接,如果不进行限流导致过多的连接到达后端服务器,可能会致使后端服务器挂掉

nginx监控
location /nginxstatus {
stub_status on;
access_log off;
}
使用location匹配nginxstatus
打开stub_status就ok了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值