分享

Nginx 限流常用模块:限制并发和IP访问频率

 拼命奋斗的自己 2020-05-28

Nginx 是我们常用的负载均衡和反向代理服务器,并发性能非常优秀。但是在并发量极大的情况下,必要限流措施还是需要的,Nginx 的有对应的模块插件可通过简单配置来完成这个功能。

4b785c6da1f.jpeg

限制并发

限制ip并发数,也是说限制同一个ip同时连接服务器的数量。

1、添加limit_conn_zone

这个变量只能在http使用。

http{

 ...

 #定义一个名为one的limit_zone,大小10M内存来存储session,

 #以$binary_remote_addr为key

 #nginx 1.18以后用limit_conn_zone替换了limit_conn

 #且只能放在http作用域

 limit_conn_zone $binary_remote_addr zone=one:10m;

2、添加limit_conn

这个变量可以在http, server, location使用。只限制一个站点,所以添加到server里面。

server{

 ...

 location {

 ...

 limit_conn one 20;          #连接数限制

 #带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k

 limit_rate 500k;         

 ...

 }

 ...

 }

3、重启Nginx。

限制IP访问频率

限制同一个ip在一段时间里连接服务器的次数,可以一定程度上防止类似CC这种快速频率请求的攻击。

1、添加limit_req_zone

这个变量只能在http使用

http{

 ...

 #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,

 #以$binary_remote_addr为key,限制平均每秒的请求为5个,

 #1M能存储16000个状态,rete的值必须为整数,

 #如果限制两秒钟一个请求,可以设置成30r/m

 limit_req_zone $binary_remote_addr zone=allips:10m rate=5r/s;

 ...

2、添加limit_req

这个变量可以在http, server, location使用。只限制一个站点,所以添加到server里面。

3、重启Nginx。

上面两种配置,注意看注释,比较实用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多