Nodejs限流中间件express-rate-limit的使用

Nodejs限流中间件express-rate-limit的使用
express-rate-limit 是一个用于 Node.js 应用程序的中间件,主要用于限制客户端请求速率。它可以帮助你防止滥用你的 API 或者防止 DDoS 攻击。

以下是 express-rate-limit 的基本使用方法:

首先,你需要安装这个库。如果你还没有安装,可以使用以下命令进行安装:

npm install express-rate-limit

然后,在你的 Express 应用中,你可以这样使用:

const express = require('express');
const rateLimit = require("express-rate-limit");

const app = express();

// 创建一个限流器
const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 100, // 每个IP地址最多允许100次请求
  message: "Too many requests from this IP, please try again after 15 minutes", // 超过限制后的返回信息
});

// 将限流器应用到所有路由
app.use(limiter);

// 示例路由
app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(3000);

上述代码将为每个 IP 地址设置一个限制:在 15 分钟内只能发送 100 个请求。如果超过此限制,服务器将返回 message 字段中的消息。

如果你想对特定路由或一组路由应用限流,你可以这样做:

app.get("/api/sensitive-data", limiter, (req, res) => {
  res.send("Sensitive data");
});

如果你想在响应头中添加限流信息,你可以通过传递 headers 选项来实现:

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 100,
  message: "Too many requests from this IP, please try again after 15 minutes",
  headers: true,
});

limiter.setHeaders = (res, options) => {
  res.set("X-RateLimit-Limit", options.limit);
  res.set("X-RateLimit-Remaining", options.remaining);
  res.set("X-RateLimit-Reset", options.reset);
};

这将在响应头中添加 X-RateLimit-Limit, X-RateLimit-Remaining, 和 X-RateLimit-Reset 字段。

这就是如何在 Express 应用中使用 express-rate-limit 中间件的基本方法。


3 回复

当然,想象一下,你正在举办一个派对,但担心人太多会挤爆你的小屋。express-rate-limit就是那个帮你控制入场人数,避免派对变成混乱的门卫。

首先,你需要安装它:

npm install express-rate-limit

然后,在你的Express应用中,你可以这样设置:

const rateLimit = require("express-rate-limit");

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟的时间窗口
  max: 100, // 每个IP最多100次请求
  message: "您请求得太频繁了,请稍后再试!"
});

app.use(limiter); // 应用于整个应用
// 或者只应用于特定路由
app.use("/api", limiter);

现在,如果有人试图在一个短时间内发送过多请求,他们将收到一条友好的消息,而不是让你的应用崩溃。这就像给你的服务器装了一个温和的刹车,确保每个人都玩得开心,但不会过度拥挤!


express-rate-limit 是一个非常实用的 Node.js 中间件,用于限制客户端请求速率,防止滥用。下面将详细介绍如何在 Express 应用中使用 express-rate-limit

安装

首先你需要安装 express-rate-limit 包:

npm install express-rate-limit

基本使用

  1. 引入必要的模块

    const express = require('express');
    const rateLimit = require("express-rate-limit");
    
  2. 创建限流实例

    创建一个限流器实例,这里我们设置每分钟最多允许100个请求:

    const limiter = rateLimit({
        windowMs: 60 * 1000, // 1 minute
        max: 100,            // Limit each IP to 100 requests per windowMs
        message: "Too many requests from this IP, please try again later.",
    });
    
  3. 应用限流器到Express应用

    将这个限流器应用到你的 Express 应用中。你可以根据需要将其应用到特定路由或整个应用:

    const app = express();
    
    // Apply the rate limiter to all requests
    app.use(limiter);
    
    // 或者只对特定路径应用限流器
    // app.use('/api', limiter);
    
    app.get("/", (req, res) => {
        res.send("Hello World!");
    });
    
    app.listen(3000, () => console.log('Server is running on port 3000'));
    

自定义响应信息

默认情况下,如果请求超过限速限制,将会返回 HTTP 状态码 429(Too Many Requests)。如果你想要自定义错误响应,可以设置 handler 参数:

const limiter = rateLimit({
    windowMs: 60 * 1000,
    max: 100,
    message: JSON.stringify({
        status: 429,
        error: "Too many requests",
        message: "Too many requests from this IP, please try again later."
    }),
    handler: function(req, res/*, next*/) {
        res.status(429).send(JSON.parse(res.message));
    }
});

这样,当请求被限流时,会按照指定的方式返回自定义的信息。

结论

以上就是如何在 Express 应用中使用 express-rate-limit 来实现限流的基本方法。通过这种方式,你可以有效地保护你的服务器免受不必要的流量攻击,确保服务稳定运行。

express-rate-limit 是一个用于 Node.js 应用中限制请求频率的中间件,通常与 Express 框架一起使用。安装后,你可以通过配置来限制特定时间段内的请求数量。基本使用如下:

  1. 安装:npm install express-rate-limit
  2. 引入并配置:
const rateLimit = require("express-rate-limit");

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 100, // 每个IP最大请求数
});

app.use(limiter);

这将为每个IP地址限制每15分钟最多100次请求。

回到顶部