Nopeusrajoitus rajoittaa kuinka monta pyyntöä asiakas voi tehdä aikaikkunassa. Sovellete sitä usealla kerroksella, koska jokainen näkee jotain erilaista, ja avainutetaan sillä, mikä tunnistaa väärinkäyttäjän.
Nopeusrajoitus rajoittaa kuinka monta pyyntöä asiakas voi tehdä aikaikkunassa. Sovellete sitä usealla kerroksella, koska jokainen näkee jotain erilaista, ja avainutetaan sillä, mikä tunnistaa väärinkäyttäjän.
429 Too Many Requests osoitteessa Retry-After, jotta asiakkaat vetäytyvät kohteliaasti katkaisemisen sijaan.# 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;
}
}
Täällä jokainen IP täyttyy uudelleen 10 pyynnöllä/sekunti, voi purskata jopa 20:ään, ja mitään sitä pidemmälle saa 429.
Nopeusrajoitus on halvin, aina päällä oleva puolustuksesi Layer 7 -tulvia, tunnistetietojen täyttöä ja juoksevia kaapijia vastaan. Kerrostaminen (reuna äänenvoimakkuudelle, välityspalvelin alkuperälle, sovellus liiketoimintalogiikalle) ja oikea avainutus pysäyttävät väärinkäyttäjät, kun taas todelliset käyttäjät — ja lailliset pursketaa — kulkevat koskemattomina. Rajojen asettaminen todellisista peruslinjoista on se, mikä estää sen muuttumasta omaksi katkostetuotoksekseen.