美文网首页
nginx 限制ip请求某个url的频率

nginx 限制ip请求某个url的频率

作者: 软红十丈 | 来源:发表于2018-01-12 14:54 被阅读0次

    问题描述:
    今天在统计nginx日志中,url访问频率的时候,发现一个接口访问次数远远大于其他的url。于是用tail -f查看实时日志,发现有个ip以每秒3-4次请求这个url。询问开发后,得知是第三方调用的,频率有点高,需要限制一下。

    解决:
    在nginx的http模块中添加以下配置

    limit_req_zone $binary_remote_addr zone=query:10m rate=1r/s;
    

    rate=1r/s 的意思是每个地址每秒只能请求一次

    在server模块中添加一下配置

        location ~ /loan/query {
            limit_req zone=req_one burst=5;
            proxy_pass http://myapp;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    

    burst是指一共有5个令牌,发完后,只能根据rate的设定每秒新增一个

    reload nginx的配置之后,再次查看日志。可以看到访问频率明显降下来了


    QQ图片20180112144603.png

    相关文章

      网友评论

          本文标题:nginx 限制ip请求某个url的频率

          本文链接:https://www.haomeiwen.com/subject/bbdfoxtx.html