Hastighetsbegränsning begränsar hur många förfrågningar en klient kan göra inom ett tidsintervall. Du tillämpar den på flera nivåer eftersom varje nivå ser något olika, och du identifierar abusören med vad som helst som identifierar angriparen.
Hastighetsbegränsning begränsar hur många förfrågningar en klient kan göra inom ett tidsintervall. Du tillämpar den på flera nivåer eftersom varje nivå ser något olika, och du identifierar abusören med vad som helst som identifierar angriparen.
429 Too Many Requests med Retry-After så klienter backar av artigt istället för att hamra.# Define a shared-memory zone keyed by client IP.
# rate=10r/s = the steady refill rate (token bucket).
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
server {
location /api/ {
# burst=20: allow a short spike of 20 queued requests
# nodelay: serve the burst immediately instead of spacing it out
limit_req zone=api burst=20 nodelay;
# Return 429 (not the default 503) so clients see a rate-limit signal
limit_req_status 429;
proxy_pass http://backend;
}
}
Här fylls varje IP på med 10 förfrågningar/sekund, kan burst upp till 20, och allt bortom det får en 429.
Hashtighetsbegränsning är ditt billigaste, alltid-aktiva försvar mot Layer 7-överbelastningar, credential stuffing och löpande skrapare. Lagring av den (edge för volym, proxy för origin, app för affärslogik) och korrekt identifiering stoppar abusörer medan verkliga användare — och legitima burst — passar igenom opåverkade. Att ställa gränser från verkliga baslinjer är vad som håller det från att bli ett avbrott av din egen skapelse.