पाठ 27 / 32

Rate Limiting

per-IP या per-user limits और time windows के साथ @fastify/rate-limit से Fastify API सुरक्षित करें।

Rate limit क्यों?

Rate limiting abuse को prevent करता है, DDoS से protect करता है, और clients के बीच fair resource allocation सुनिश्चित करता है।

@fastify/rate-limit उपयोग करना

Built-in protection के लिए Fastify rate-limit plugin उपयोग करें।

import rateLimit from '@fastify/rate-limit';

await fastify.register(rateLimit, {
  max: 100,                  // requests
  timeWindow: '15 minutes',
  allowList: ['127.0.0.1'],  // don't limit localhost
  keyGenerator: (req) => req.user?.id || req.ip, // per user if authenticated, else per IP
});