nginx rate limiting: whitelisting srazí req/s na desetinu

Na svem web-serveru sem si nastavil rate-limiting dle tohodle blogu:
https://www.nginx.com/blog/rate-limiting-nginx/

Kód: [Vybrat]
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
limit_req zone=req_zone burst=20 nodelay;

Otestoval sem propustnost web-serveru pomoci apache-benchmarku a dostal sem kolem 350req/s. Pak sem si rekl, ze by snad nebylo spatne z toho vyhodit lokalni IP aby nebyly tim rate-limitingen pri testovani ovlivneny. Doplnil sem tedy whitelisting pomoci "geo" a "map" (misto "999.999.999.999" je tam skutecna IPv4 adresa). Prislusna cast konfigurace vypada ted takhle:

Kód: [Vybrat]
geo $limit {
                default 1;
                127.0.0.1 0;
                999.999.999.999 0;
}

map $limit $limit_key {
                0 "";
                1 $binary_remote_addr;
}

limit_req_zone $limit_key zone=req_zone:10m rate=10r/s;
limit_req zone=req_zone burst=20 nodelay;

K memu zdeseni, hodnota request/sec padla z ~350 na ~30! Vratil sem se ke konfiguraci bez whitelistu, restartoval nginx, nekolikrat otestoval, opet sem mel ~350req/s. Opet sem aktivoval whitelist, restartoval nginx, otestoval, a opet mam jen kolem 30req/s. Co delam spatne? Nemohu uverit, ze jednoduchej whitelist (bez "if") by takhle srazil rychlosts web-serveru...
« Poslední změna: 05. 05. 2020, 22:59:34 od Petr Krčmář »


Michal Stulík

  • *
  • 10
  • Mezi klávesnicí a židlí.
    • Zobrazit profil
    • Meziblog
Re:nginx rate limiting: whitelisting srazí req/s na desetinu
« Odpověď #1 kdy: 07. 05. 2020, 13:01:48 »
Zkusil jsem stejnou konfiguraci na svém serveru a žádný rozdíl. S whitelistem i bez něj dosahuji stejných výsledků.