Liigu peamise sisu juurde

Ärge raisake oma serveri ressursse: blokeerige soovimatud botid Nginx-iga

· 3 min lugemine
Customer Care Engineer

block-unwanted-bots-using-nginx

Otsingumootorite botid (indeksijad) on spetsiaalsed programmid, mis skannivad veebisaite internetis. Otsingumootorid vajavad neid, et leida, indekseerida ja kuvada lehti otsingutulemustes. Kuid mitte kõik botid pole kasulikud!

Mõnikord võib teie saiti külastada soovimatuid botte, mis:

  • Kogub andmeid ilma teie loata.
  • Tarbib serveri ressursse, aeglustades seda.
  • Kasutatakse haavatavuste otsimiseks.

Kui soovite oma saiti selliste botide eest kaitsta, on aeg konfigureerida Nginx! Selles artiklis näitame teile, kuidas neid lihtsalt ja kiiresti blokeerida spetsiaalse konfiguratsioonifaili abil.


Miks Nginx-i konfiguratsioon robotid.txt asemel?

Fail robots.txt on tööriist otsingubottide käitumise haldamiseks. See ütleb neile, milliseid saidi osi ei tohiks indekseerida. Seda faili on väga lihtne kasutada: looge lihtsalt üks saidi juurkataloogi, näiteks:

User-agent: BadBot  

Disallow: /  

Kuid on üks probleem: robots.txt juhised on soovitus, mitte jõustatav reegel. Teadlikud botid järgivad selle faili juhiseid, kuid enamik botte lihtsalt ignoreerib seda.

Vastupidi, Nginx-i konfigureerimine võimaldab teil füüsiliselt blokeerida juurdepääsu soovimatutele botidele, tagades 100% efektiivse tulemuse.


Kuidas Nginx blokeerib soovimatud botid: vastuse 444 kasutamine

Erinevalt robots.txt-st, mis pakub botidele ainult soovitusi, Nginx füüsiliselt blokeerib nende juurdepääsu. Üks viis selle saavutamiseks on kasutada spetsiaalset serveri vastust koodiga 444.

Nginx-is on vastuse kood 444 sisemine meetod ühenduse katkestamiseks kliendiga ilma vastust saatma. See on tõhus lähenemisviis soovimatute päringute ignoreerimiseks ja serverikoormuse minimeerimiseks.


Blokeerimise seadistamine

1. samm: Kuidas tuvastada soovimatud botid?

Soovimatud botid saab tuvastada nende User-Agent järgi, mis on parameeter, mida kõik kliendid oma saidile külastades saadavad. Näiteks võivad mõned User-Agentid välja näha nii:

    AhrefsBot     SemrushBot     MJ12bot

Kahtlased User-Agenti väärtused leiate Nginx-i juurdepääsu logist (kui teie sait kasutab PHP-FPM):

sudo grep -i bot /var/log/nginx/access.log

Või Apache juurdepääsu logist (kui teie sait kasutab Apache moodulit või FastCGI-d PHP-käitlejana):

  • Ubuntu/Debiani puhul:
sudo grep -i bot /var/log/apache2/access.log
  • CentOS/AlmaLinux/RockyLinuxi puhul:
sudo grep -i bot /var/log/httpd/access.log

Kui kasutate juhtpaneeli nagu FASTPANEL, on igal saidil oma eraldi logifail. Saate neid analüüsida eraldi või korraga, kasutades käsku nagu:

  • Kui teie sait kasutab Apache moodulit või FastCGI-d PHP-käitlejana:
sudo cat /var/www/*/data/logs/*-backend.access.log | grep -i bot | tail -500
  • Kui teie sait kasutab PHP-FPM-i:
sudo cat /var/www/*/data/logs/*-frontend.access.log | grep -i bot | tail -500

See käsk kuvab viimased 500 päringut kõigile teie saitidele, kus User-Agent parameeter sisaldab sõna „bot“. Ühe rea näidis (üks päring teie saidile) võib välja näha järgmine:

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])"

või

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/)"

Boti User-Agent asub päringurea lõpus sulgudes olevate segmentide “compatible;” ja “/version.number“ vahel. Seega ülaltoodud näidetes on User-agentid: BLEXBot ja DotBot.

Analüüsige kogutud teavet ja märkige kõige aktiivsemate bottide User-Agent stringid järgmiseks sammuks, blokeerimise konfigureerimiseks.

2. samm: Looge fail botide blokeerimiseks

  1. Ühenduge oma serveriga SSH kaudu.
  2. Enne muudatuste tegemist veenduge, et teie praegune Nginx-i konfiguratsioon ei sisalda vigu:
nginx -t

Kui kõik on korras, näete järgmist:

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

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

Kui esineb vigu, vaadake need üle ja parandage need veateadetes märgitud failis.

  1. Looge eraldi fail blokeeritavate botide loendiga:
sudo nano /etc/nginx/conf.d/block_bots.conf

Lisage faili järgmine kood:

    map $http_user_agent $block_bot {

        default 0;

        ~*AhrefsBot 1;

        ~*SemrushBot 1;

        ~*MJ12bot 1;

    }



    server {

        if ($block_bot) {

            return 444;

        }
    }

Siin loome kaardi, mis määrab, milliseid botte tuleks blokeerida.

Järgides seda malli, loetlege nende botide User-Agent stringid, mida soovite blokeerida. Peate loetlema iga boti uuel real ja asetama iga rea lõppu semikooloni ; eraldajana.

Pärast loendi koostamise lõpetamist vajutage faili salvestamiseks klaviatuuril nuppu "Ctrl + O" ja seejärel nano redigeerijast väljumiseks "Ctrl + X".

3. samm: Rakendage muudatused

Pärast muudatuste tegemist testige alati Nginx-i konfiguratsiooni õigsuse kontrollimiseks, et veenduda süntaksivigade puudumises:

sudo nginx -t

Kui kõik on korras, näete järgmist:

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

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

Kui esineb vigu, vaadake väljundit, et need tuvastada ja parandada märgitud failis.

Seejärel laadige Nginx-i konfiguratsioon uuesti, et muudatused rakendada:

sudo systemctl reload nginx

Tulevikus, kui peate lisama rohkem botte block_bots.conf faili, korrake seda sammu iga kord.


Järeldus

Nüüd teate, kuidas oma serveris Nginx-i abil lihtsalt soovimatuid otsingubotte blokeerida! Jälgige oma logisid ja lisage vajadusel block_bots.conf konfiguratsioonifaili uusi ridu.

Veenduge, et blokeerite ainult pahatahtlikud botid, et te ei takistaks kasulikel otsingumootoritel nagu Google või Bing teie saiti indekseerimast.