限制 nestjs 的 API 速率
Limit API rate for nestjs
我正在寻找一种限制 nestjs api 速率的好方法。
我看过不同的套餐,但它们都基于用户 ip 进行限制。
你知道任何使用用户访问令牌的好包吗?
如果不是,你能告诉我我的理解是否正确吗?
IF (DB has record where [dbAccessToken === reqAccessToken])
IF (currentDate <= record.timestamp + limitSeconds)
=> throw "Rate Limit Error"
...
=> Resolve Request
=> Add record in DB
我认为我的解决方案可行,但我担心它会影响 api 速度。
我认为限速有两种可能:
- (首选):在网络服务器级别实施速率限制(即通过 nginx/apache 等)(link 用于 nginx https://www.nginx.com/blog/rate-limiting-nginx/ 的速率限制)
- 在您的应用程序中实现它 - 有一个很好的中间件可用于 express,它也可以在 NestJS 中使用 (https://www.npmjs.com/package/express-rate-limit)
也可以使用 NestJS 中间件(此处解释:https://docs.nestjs.com/middleware)实现您提出的逻辑 - 但我不建议您这样做,因为这非常耗费资源!
我正在寻找一种限制 nestjs api 速率的好方法。 我看过不同的套餐,但它们都基于用户 ip 进行限制。
你知道任何使用用户访问令牌的好包吗?
如果不是,你能告诉我我的理解是否正确吗?
IF (DB has record where [dbAccessToken === reqAccessToken])
IF (currentDate <= record.timestamp + limitSeconds)
=> throw "Rate Limit Error"
...
=> Resolve Request
=> Add record in DB
我认为我的解决方案可行,但我担心它会影响 api 速度。
我认为限速有两种可能:
- (首选):在网络服务器级别实施速率限制(即通过 nginx/apache 等)(link 用于 nginx https://www.nginx.com/blog/rate-limiting-nginx/ 的速率限制)
- 在您的应用程序中实现它 - 有一个很好的中间件可用于 express,它也可以在 NestJS 中使用 (https://www.npmjs.com/package/express-rate-limit)
也可以使用 NestJS 中间件(此处解释:https://docs.nestjs.com/middleware)实现您提出的逻辑 - 但我不建议您这样做,因为这非常耗费资源!