Oma*_*hir 5 rate-limiting amazon-web-services node.js express
我正在使用express-rate-limitnpm 包,我在 AWS 上部署了后端(t2 micro ec2 实例),当限制器打开时,尝试与ALL users我的 API 交互的请求被阻止,它工作了几分钟,停止了大约 10 分钟。当我注释掉限制器部分时,一切都工作正常,我认为只有一个试图用请求攻击服务器的用户应该阻止太多请求,但发生的情况是ALL users get blocked,所有用户都被视为只有 1 个用户,这就是我的结论。
如果是这样的话我该怎么办?我需要打开速率限制器,如果有其他解释会是什么?
kma*_*ana 10
默认情况下,express-rate-limit有keyGenerator一个req.ip。当我将其记录到我的服务器上时,'::ffff:127.0.0.1'显然每个请求都会相同,因此一旦限制一个 IP 地址,就会限制所有 IP 地址。
我的解决方案是使用request-ip获取正确的 IP 地址,如下所示:
const rateLimit = require('express-rate-limit');
const requestIp = require('request-ip');
const app = express();
app.use(requestIp.mw());
app.use(rateLimit({
windowMs: 60 * 1000, // 1 minute
max: 30, // limit each IP to 30 requests per windowMs
keyGenerator: (req, res) => {
return req.clientIp // IP address from requestIp.mw(), as opposed to req.ip
}
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6138 次 |
| 最近记录: |