Skip to main content

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

· 3 min read
Customer Care Engineer

block-unwanted-bots-using-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

Šī komanda parādīs pēdējos 500 pieprasījumus visām jūsu vietnēm, kurās User-Agent parametrs satur vārdu „bot”. Viena rindiņa (viens pieprasījums uz jūsu vietni) piemērs varētu izskatīties šādi:

IP - [03/Nov/2022:10:25:52 +0300] "GET link HTTP/1.0" 301 811 "-" "Mozilla/5.0 (compatible; DotBot/1.2; +https://opensiteexplorer.org/dotbot; [email protected])"

vai

IP - [24/Oct/2022:17:32:37 +0300] "GET link HTTP/1.0" 404 469 "-" "Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)"

Robota User-Agent atrodas starp segmentiem “compatible;” un “/version.number“ pieprasījuma rindas beigās iekavās. Tātad iepriekšējos piemēros User-agents ir: BLEXBot un DotBot.

Analyze the information you gather and note the User-Agent strings of the most active bots for the next step of configuring the block.

2. solis: Izveidojiet failu robotu bloķēšanai

  1. Savienojieties ar savu serveri, izmantojot SSH.
  2. Before making changes, ensure that your current Nginx configuration has no errors:
nginx -t

Ja viss ir kārtībā, redzēsiet:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Ja ir kādas kļūdas, pārskatiet tās un izlabojiet failā, ko norāda kļūdu ziņojumi.

  1. Izveidojiet atsevišķu failu, kurā uzskaitīti bloķējamie roboti:
sudo nano /etc/nginx/conf.d/block_bots.conf

Pievienojiet failā šādu kodu:

    map $http_user_agent $block_bot {

        default 0;

        ~*AhrefsBot 1;

        ~*SemrushBot 1;

        ~*MJ12bot 1;

    }



    server {

        if ($block_bot) {

            return 444;

        }
    }

Šeit mēs izveidojam karti, kas nosaka, kuri roboti ir jābloķē.

Sekojot šim paraugam, uzskaitiet to robotu User-Agent virknes, kurus vēlaties bloķēt. Jums ir jāuzskaita katrs robots jaunā rindā un katras rindas beigās jāievieto semikols ; kā atdalītājs.

Kad būsiet pabeidzis saraksta veidošanu, nospiediet "Ctrl + O", lai saglabātu failu, pēc tam "Ctrl + X", lai izietu no nano redaktora.

3. solis: Lietojiet izmaiņas

Pēc izmaiņu veikšanas vienmēr pārbaudiet Nginx konfigurācijas pareizību, lai pārliecinātos, ka nav sintakses kļūdu:

sudo nginx -t

Ja viss ir kārtībā, redzēsiet:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Ja ir kādas kļūdas, pārskatiet izvadi, lai identificētu un izlabotu tās norādītajā failā.

Pēc tam restartējiet Nginx konfigurāciju, lai lietotu izmaiņas:

sudo systemctl reload nginx

In the future, if you need to add more bots to the block_bots.conf file, you should repeat this step each time.


Secinājums

Tagad jūs zināt, kā viegli bloķēt nevēlamus meklētājprogrammu robotus savā serverī, izmantojot Nginx! Sekojiet līdzi saviem žurnāliem un pievienojiet jaunas rindas konfigurācijas failam block_bots.conf, kad nepieciešams.

Pārliecinieties, ka bloķējat tikai ļaunprātīgus robotus, lai netraucētu noderīgām meklētājprogrammām, piemēram, Google vai Bing, indeksēt jūsu vietni.