Neizmantojiet savus servera resursus: bloķējiet nevēlamus robotus, izmantojot Nginx

Meklētājprogrammu roboti (rāpuļi) ir īpašas programmas, kas skenē vietnes internetā. Meklētājprogrammas viņus izmanto, lai atrastu, indeksētu un rādītu lapas meklēšanas rezultātos. Bet ne visi roboti ir noderīgi!
Dažreiz jūsu vietni var apmeklēt nevēlami roboti, kuri:
- Vāc datus bez jūsu atļaujas.
- Patērē servera resursus, palēninot to.
- Tiek izmantoti, lai meklētu ievainojamības.
Ja vēlaties aizsargāt savu vietni no šādiem robotiem, ir pienācis laiks konfigurēt Nginx! Šajā rakstā mēs parādīsim, kā tos viegli un ātri bloķēt, izmantojot īpašu konfigurācijas failu.
Kāpēc Nginx konfigurācija, nevis robots.txt?
Robots.txt failā ir rīks meklētājprogrammu robotu darbības pārvaldībai. Tas norāda viņiem, kuras vietnes daļas nedrīkst skenēt. Šo failu ir ļoti viegli lietot: vienkārši izveidojiet to vietnes saknes direktorijā, piemēram:
User-agent: BadBot
Disallow: /
Tomēr pastāv problēma: robots.txt instrukcijas ir ieteikums, nevis obligāts noteikums. Godprātīgi roboti ievēro šī faila norādījumus, bet lielākā daļa robotu to vienkārši ignorē.
Turpretim, konfigurējot Nginx, jūs varat fiziski bloķēt piekļuvi nevēlamiem robotiem, garantējot 100% efektīvu rezultātu.
Kā Nginx bloķē nevēlamus robotus: izmantojot atbildi 444
Atšķirībā no robots.txt, kas sniedz tikai ieteikumus robotiem, Nginx fiziski bloķē viņu piekļuvi. Viens no veidiem, kā to panākt, ir izmantot īpašu servera atbildi ar kodu 444.
Nginx gadījumā atbildes kods 444 ir iekšējs veids, kā pārtraukt savienojumu ar klientu, nesūtot nekādu atbildi. Šī ir efektīva pieeja, lai ignorētu nevajadzīgus pieprasījumus un samazinātu servera slodzi.
Bloķēšanas iestatīšana
1. solis: Kā identificēt nevēlamus robotus?
Nevēlamus robotus var identificēt pēc viņu User-Agent, kas ir parametrs, ko visi klienti nosūta, apmeklējot jūsu vietni. Piemēram, daži User-Agent var izskatīties šādi:
AhrefsBot
SemrushBot
MJ12bot
Aizdomīgas User-Agent vērtības varat atrast Nginx piekļuves žurnālā (ja jūsu vietne izmanto PHP-FPM):
sudo grep -i bot /var/log/nginx/access.log
Vai Apache piekļuves žurnālā (ja jūsu vietne izmanto Apache moduli vai FastCGI kā PHP apdarinātāju):
- Ubuntu/Debian gadījumā:
sudo grep -i bot /var/log/apache2/access.log
- CentOS/AlmaLinux/RockyLinux gadījumā:
sudo grep -i bot /var/log/httpd/access.log
Ja izmantojat vadības paneli, piemēram, FASTPANEL, katrai vietnei būs savs atsevišķs žurnāla fails. Varat tos analizēt individuāli vai visus vienlaicīgi, izmantojot komandu, piemēram:
- Ja jūsu vietne izmanto Apache moduli vai FastCGI kā PHP apdarinātāju:
sudo cat /var/www/*/data/logs/*-backend.access.log | grep -i bot | tail -500
- Ja jūsu vietne izmanto PHP-FPM:
sudo cat /var/www/*/data/logs/*-frontend.access.log | grep -i bot | tail -500