问题描述:
今天在统计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的配置之后,再次查看日志。可以看到访问频率明显降下来了