使用Nginx控制服务器脚本速率

2 投票
1 回答
692 浏览
提问于 2025-04-18 07:42

我在服务器上有一个(用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;
    }
}

撰写回答