Ograničenje brzine zahtjeva ograničava koliko zahtjeva klijent može poslati u vremenskom prozoru. Primjenjujete ga na više slojeva jer svaki vidi nešto drugačije, i ključate ga po onome što identificira zloupotrebljavatelja.
Ograničenje brzine zahtjeva ograničava koliko zahtjeva klijent može poslati u vremenskom prozoru. Primjenjujete ga na više slojeva jer svaki vidi nešto drugačije, i ključate ga po onome što identificira zloupotrebljavatelja.
429 Too Many Requests s Retry-After kako bi se klijenti ljubazno povukli umjesto da bombardiraju.# 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;
}
}
Ovdje se svaka IP adresa dopunjava s 10 zahtjeva/sekundi, može burst do 20, i sve što je više dobije 429.
Ograničenje brzine zahtjeva je vaša najjeftinija, uvijek uključena obrana od Layer 7 poplava, napadaja kredencijala i neupravljivih scraper-a. Slaganje ga (edge za volumen, proxy za origin, aplikacija za poslovnu logiku) i pravilno ključanje ga zaustavlja zloupotrebljavatelje dok pravi korisnici — i legitimni burst-i — prolaze neoštećeni. Postavljanje limite od stvarnih baseline-a je ono što sprječava da postane prekid vašeg vlastitog stvaranja.