使用Nginx控制服务器脚本速率
我在服务器上有一个(用Python写的)脚本,我不想让同一个人或者机器人频繁执行它。每5秒执行一次是可以的,但如果有人试图更频繁地运行,就会对我的服务器造成伤害……
因为这个应用只是一个小周末项目,我不想使用复杂的防欺诈或防DDoS保护系统。我想用Nginx的ngx_http_limit_req_module
来简单实现这个功能。
我觉得手册有点让人困惑……你们有没有这个场景的示例?
每个IP地址应该只能每5秒连接一次特定的位置。
1 个回答
1
这个速率是以每秒请求次数来计算的(r/s)。如果你想要的速率少于每秒一个请求,那就用每分钟请求次数来表示(r/m)。举个例子,如果每秒半个请求,那就是每分钟30个请求(30r/m)。
# Allow not more than 12 request per minute at an average, with bursts not exceeding 1 requests.
limit_req_zone $binary_remote_addr zone=one:10m rate=12r/m;
server {
location /path/to/python/script.py {
limit_req zone=one burst=1;
}
}