Puteți configura Nginx să memoreze în cache răspunsurile, inclusiv răspunsurile cu o eroare, cum ar fi 404. Cu toate acestea, din câte știu, nu puteți număra numărul de erori (dar asta nu ar trebui să conteze).
Singura problemă aici este că dacă creați o pagină nouă și mai devreme a fost memorată în cache ca 404, atunci nu va funcționa. Cel puțin, nu imediat (în funcție de cât timp durează cache-ul pentru a expira).
Cu siguranță asta va ajuta foarte mult, totuși. Toate accesările care altfel ar merge la backend-ul tău și ar genera un 404 vor fi oprite la instanța Nginx și vor returna exact aceeași eroare 404 din nou și din nou.
O altă modalitate este să definiți o locație și să rulați o comandă (care ar putea apoi să ruleze ipset
pentru a adăuga adresa IP). Deci ceva de genul:
locație /phpmyadmin.php {
content_by_lua_block {
os.execute("/usr/bin/block-ip.sh")
}
}
Totuși, nu sunt prea sigur cum ai putea face față mai multor căi.
propria mea experiență cu fail2ban
este că este destul de lent și „înapoi” (nu proactiv). Dacă chiar doriți să blocați complet o adresă IP, cel mai ușor este să aveți aplicația dvs. trimiteți un mesaj la front-end unde puteți rula iptables
pentru a bloca IP-ul. Pentru asta trebuie să redirecționați IP-ul original, ceea ce Nginx nu o face în mod implicit, dar este ușor să adăugați un X-Redirecţionat-Pentru
antetul aplicației dvs. poate apoi trimite înapoi la instrumentul mic pe care îl utilizați pentru a adăuga IP-uri la dvs iptables
. Rețineți, de asemenea, că nu ar trebui să îl adăugați direct iptables
. În schimb, ar trebui să folosiți o listă. Pentru acea privire la ipset
.
Dacă nu vă puteți schimba aplicațiile pentru așa ceva și doriți să le utilizați fail2ban
, ar trebui să verificați jurnalele Nginx și să detectați acele căi care nu vă plac.