Nginx

Hvordan blokkere hotlinking med Nginx

Hvordan blokkere hotlinking med Nginx
Nginx er en lett webserver som er i stand til å håndtere enormt mange forespørsler på et gitt tidspunkt uten å gjøre serveren opptatt. Den inneholder sofistikerte funksjoner som asynkron prosessering, støtte til ipv6, cache loader, http / 2 support, block hotlinking, thread pools, SPDY og SSL, og mange flere. Blant dem er en av de viktigste funksjonene for ethvert nettsted generelt blokkering av hotlinking. Hotlinking er en ondsinnet praksis som ofte utføres av visse små nettmestere når de ikke har råd til båndbreddekostnader, og dermed ender de med å ta det fra et annet sted. Dette hindrer legitime nettmestere i å bruke båndbredden de betalte for. I tillegg kan den tilknyttede ressursen være utilgjengelig for brukerne som besøker det opprinnelige nettstedet, når båndbredden som er tildelt den opprinnelige nettredaktøren, er tom, og nettstedseieren ikke betalte for båndbredden som ble brukt for mye. Alt i alt, for å bevare integriteten, bør tilgjengeligheten til nettstedets hotlinking stoppes, og denne guiden lærer hvordan du gjør det enkelt.

Forberedelse

I prepareringssegmentet tas de generelle instruksjonene for begge senere nevnte metoder ned. Åpenbart er det viktig å ha en konsoll for å få tilgang til serveren via SSH, og en skikkelig teksteditor som nano for å åpne Nginx-konfigurasjonsfilen. Når begge er anskaffet, bruk følgende kommandoer for å åpne, lagre og bruke endringene. Følgende trinn antar at brukeren allerede har tilgang til serveren via SSH.

nano / etc / nginx / nettsteder-tilgjengelig / standard

Metode 1: Generell metode

Den generelle metoden er veldig enkel å implementere og forstå, da den bare inneholder en lokasjonsblokk. Videre blokkerer den bare forespørsler til bestemte filformater i stedet for å blokkere alle forespørsler fra ugyldige henvisere til serveren.

  1. Kopier følgende kodebit.
  2. Åpne standardfilen til nginx som vist i "Forberedelsesfasen".
  3. Lim inn den kopierte kodebiten under den første plasseringsblokken som finnes i standardfilen. I nginx prioriteres alltid store og små bokstaver ufølsomme (~ *) før skråstrek fremover (/), og følgelig blir følgende kodebit utført før blokkeringen for fremover skråstrek.
  4. Lagre og lukk standardfilen, og følg deretter 3, 4 trinn i "Klargjøring" -fasen for å gjøre endringer som trer i kraft.

I det følgende eksemplet blokkerer den forespørsler om css-, gif-, ico-, jpeg-, js-, png-, woff-, woff2-, ttf-, ttc-, otf- og eot-filer. Det er 10 betingede uttalelser under lokaliseringsblokk. Den første betingede uttalelsen gjør at ressursene kan vises direkte gjennom nettleseren, 2nd og 3rd blokker gjør det mulig å se på ressursene gjennom det opprinnelige nettstedet (både nakne og www underdomener), resten av blokkene unntatt søket?q og den siste blokken tillater søkemotor-crawlere å få tilgang til og indeksere ressursene, noe som er veldig viktig for å indeksere bildene i både google-bilder og bing-bilder. Søket?q lar google cache-tjenesten få tilgang til, og lagre ressursene sammen med siden, og dermed kan siden nås direkte gjennom google-søkeresultatet når nettstedet er offline.

plassering ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $
hvis ($ http_referer !~ "^ $")
sett $ rule_0 1 $ rule_0;

hvis ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
sett $ regel_0 2 $ regel_0;

hvis ($ http_referer !~ "^ http: // nucuta.com $ ")
sett $ regel_0 3 $ regel_0;

hvis ($ http_referer !~ * "google.")
sett $ regel_0 4 $ regel_0;

hvis ($ http_referer !~ * "søk?q = hurtigbuffer ")
sett $ rule_0 5 $ rule_0;

hvis ($ http_referer !~ * "msn.")
sett $ regel_0 6 $ regel_0;

hvis ($ http_referer !~ * "yahoo.")
sett $ rule_0 7 $ rule_0;

hvis ($ http_user_agent !~ * "googlebot")
sett $ regel_0 8 $ regel_0;

hvis ($ http_user_agent !~ * "msnbot")
sett $ regel_0 9 $ regel_0;

hvis ($ http_user_agent !~ * "slurp")
sett $ regel_0 10 $ regel_0;

hvis ($ rule_0 = "10987654321")
retur 403;
gå i stykker;

Metode 2: Valid_Referers Method

Gyldige henvisere er den mest praktiske, og den allment anerkjente metoden for å blokkere ugyldige henvisere med letthet. Den inneholder bare to linjer sammenlignet med forrige metode og er veldig fleksibel. Imidlertid er det litt vanskelig å fordøye ettersom det er involvert vanlige uttrykk, og en annen mekanisme for å blokkere forespørsler fra ugyldige henvisere.

  1. Kopier følgende kodebit i mellom, og helt i begynnelsen av hovedplasseringsblokken.
  2. Erstatt domenenavnelisten med tillatte domenenavn, for eksempel google, bing eller dine egne domener osv.
  3. Lagre og lukk standardfilen, og følg deretter 3, 4 trinn i "Klargjøring" -fasen for å gjøre endringer som trer i kraft.

valid_referers ingen blokkerte servernavn

*.Linux.com linux.* www.Linux.com / om /
~ \.linux \.;
 
hvis ($ invalid_referer)
retur 403;

Den har hovedsakelig to kodeblokker, valid_referers, og if-betinget uttrykk med ugyldig_referer-variabel. Som standard brukes denne kodeblokken innimellom, og helt i begynnelsen av stedsblokken før utførelsen av en hvilken som helst annen kode, men den kan også brukes på et hvilket som helst annet sted, for eksempel mellom en stedskodeblokk med vanlige uttrykk til oppdage spesifikke filformater for å gjøre blokkeringen relevant for de nevnte filformatene, som i metode 1. Som forklart tidligere inneholder metoden bare to kodeblokker, den første kodeblokken inneholder tre nøkkelord, den første er "ingen" når referansefeltet mangler i HTTP-forespørselen, den andre er "blokkert" når referansefeltet er slettet av ethvert mellomparti, for eksempel en proxy, brannmur osv., det tredje nøkkelordet er for å spesifisere gyldige domenenavn.

Når domenenavnet begynner med “~” -symbolet, blir det sett på som et vanlig uttrykk, og det kan derfor brukes svært komplekse mønstre, men det kan være vanskelig å forstå om regulære uttrykk ikke er kjent. Hvis ingen av betingelsene er oppfylt i valid_referers-setningen, er ugyldig_referer-variabelen satt til tom streng, ellers er den satt til 1, hva det betyr hvis den kommende forespørselen ikke inneholder noe referansefelt, eller hvis nginx identifiserte at referansefeltet er fjernet av en brannmur eller en proxy, eller hvis referansefeltet er satt til de angitte domenene (gyldig domenenavnliste), blir ugyldig referervariabel satt til tom streng, og dermed hvis dens tilstand ikke blir utført. Imidlertid, hvis forespørsel kommer fra et domene som ikke er spesifisert i valid_referers-uttrykket som et gyldig domene, så er det blokkert.

KONKLUSJON

Sørg for å vurdere dette innholdet og forhindre hotlinking på Nginx-vertssidene dine.

Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...
Hvordan laste ned og spille Sid Meier's Civilization VI på Linux
Introduksjon til spillet Civilization 6 er et moderne syn på det klassiske konseptet som ble introdusert i serien av Age of Empires-spillene. Ideen va...
Hvordan installere og spille Doom på Linux
Introduksjon til Doom Doom-serien stammer fra 90-tallet etter utgivelsen av den originale Doom. Det ble en øyeblikkelig suksess, og fra den tiden og u...