Nginx

Hur man blockerar hotlinking med Nginx

Hur man blockerar hotlinking med Nginx
Nginx är en lätt webbserver som kan hantera enormt antal förfrågningar vid en viss tid utan att göra servern upptagen. Den innehåller sofistikerade funktioner som asynkron bearbetning, stöd för ipv6, cache-laddare, http / 2-stöd, blockera hotlinking, trådpooler, SPDY och SSL och många fler. Bland dem är en av de viktigaste funktionerna för en webbplats i allmänhet blockera hotlinking. Hotlinking är en skadlig metod som ofta görs av vissa små webbansvariga när de inte har råd med bandbreddskostnader, och därmed slutar de ta det från någon annanstans. Detta hindrar legitima webbmästare från att använda bandbredden de betalade för. Utöver det kan den länkade resursen vara otillgänglig för användare som besöker den ursprungliga webbplatsen, när den bandbredd som tilldelats för den ursprungliga webbansvararen är slut och webbplatsägaren inte betalade för den överdrivet förbrukade bandbredden. Allt som allt, för att bevara integriteten, bör tillgängligheten för webbplatsens hotlinking stoppas, och den här guiden lär dig hur du gör det enkelt.

Förberedelse

I beredningssegmentet tas de allmänna instruktionerna för båda senare nämnda metoder bort. Uppenbarligen är det viktigt att ha en konsol för att komma åt servern via SSH, och en korrekt textredigerare som nano för att öppna Nginx-konfigurationsfilen. När båda har förvärvats, använd följande kommandon för att öppna, spara och tillämpa ändringarna. Följande steg förutsätter att användaren redan har åtkomst till servern via SSH.

nano / etc / nginx / sites-available / default

Metod 1: Allmän metod

Den allmänna metoden är mycket lätt att implementera och förstå eftersom den bara innehåller ett platsblock. Dessutom blockerar den förfrågningar till vissa filformat bara istället för att blockera varje begäran från ogiltiga referenser till servern.

  1. Kopiera följande kodavsnitt.
  2. Öppna standardfilen för nginx enligt "Förberedelser" -fasen.
  3. Klistra in det kopierade kodavsnittet under det första platsblocket som finns i standardfilen. I nginx prioriteras det vanliga skiftläget okänsligt (~ *) alltid före snedstreck framåt (/), och följaktligen körs följande kodavsnitt före blixtsnitten.
  4. Spara och stäng standardfilen och följ sedan 3, 4 steg i "Förberedelsefasen" för att göra ändringar som träder i kraft.

I följande exempel blockerar den förfrågningar till css-, gif-, ico-, jpeg-, js-, png-, woff-, woff2-, ttf-, ttc-, otf- och eot-filer. Det finns 10 villkorliga uttalanden under platsblock. Det första villkorliga uttalandet gör det möjligt att se resurserna direkt via webbläsaren, 2nd och 3rd block gör att resurserna kan ses via den ursprungliga webbplatsen (både nakna och www-underdomäner), resten av blocken utom sökningen?q och det sista blocket tillåter sökmotors sökrobotar att komma åt och indexera resurserna, vilket är mycket viktigt för att indexera bilderna i både google-bilder och bing-bilder. Sökningen?q tillåter googles cachetjänst att komma åt och spara resurserna tillsammans med sidan, och därmed kan sidan nås direkt via Googles sökresultat när webbplatsen är offline.

plats ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $
if ($ http_referer !~ "^ $")
ställa in $ rule_0 1 $ rule_0;

if ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
ställa in $ rule_0 2 $ rule_0;

if ($ http_referer !~ "^ http: // nucuta.com $ ")
ställa in $ rule_0 3 $ rule_0;

if ($ http_referer !~ * "google.")
ställa in $ rule_0 4 $ rule_0;

if ($ http_referer !~ * "sök?q = cache ")
ställa in $ rule_0 5 $ rule_0;

if ($ http_referer !~ * "msn.")
ställa in $ rule_0 6 $ rule_0;

if ($ http_referer !~ * "yahoo.")
ställa in $ rule_0 7 $ rule_0;

if ($ http_user_agent !~ * "googlebot")
ställa in $ rule_0 8 $ rule_0;

if ($ http_user_agent !~ * "msnbot")
ställa in $ rule_0 9 $ rule_0;

if ($ http_user_agent !~ * "slurp")
ställa in $ rule_0 10 $ rule_0;

if ($ rule_0 = "10987654321")
retur 403;
ha sönder;

Metod 2: Metod Valid_Referers

Giltiga referenser är det mest bekväma och den allmänt erkända metoden för att enkelt blockera ogiltiga referenser. Den innehåller bara två rader jämfört med den tidigare metoden och är mycket flexibel. Det är dock lite svårt att smälta eftersom det handlar om reguljära uttryck och en annan mekanism för att blockera förfrågningar från ogiltiga referenser.

  1. Kopiera följande kodavsnitt mellan och i början av huvudplaceringsblocket.
  2. Ersätt domännamnslistan med de tillåtna domännamnen, till exempel google, bing eller dina egna domäner etc.
  3. Spara och stäng standardfilen och följ sedan 3, 4 steg i "Förberedelsefasen" för att göra ändringar som träder i kraft.

valid_referers inga blockerade server_names

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

Den har huvudsakligen två kodblock, valid_referers, och if-villkorligt uttryck med invalid_referer-variabel. Som standard används detta kodblock däremellan och i början av platsblocket innan exekvering av någon annan kod, men det kan också användas på någon annan plats, till exempel mellan ett platskodblock med reguljära uttryck till upptäcka specifika filformat för att göra blockeringen relevant för ovannämnda filformat, som i metod 1. Som tidigare förklarats innehåller metoden bara två kodblock, det första kodblocket innehåller tre nyckelord, det första är "ingen" när referensfältet saknas i HTTP-förfrågan, det andra "blockeras" när referensfältet raderas av alla mittpartier, såsom en proxy, brandvägg etc., det tredje nyckelordet är för att specificera giltiga domännamn.

När domännamnet börjar med “~” -symbolen betraktas det som ett reguljärt uttryck och därmed kan mycket komplexa mönster användas, men det kan vara svårt att förstå om reguljära uttryck inte är väl kända. Om inget av villkoren uppfylls i valid_referers uttalande, är variabeln invalid_referer satt till tom sträng, annars är den inställd på 1, vad det betyder om den kommande begäran inte innehåller något referensfält, eller om nginx identifierade att referensfältet har tagits bort av en brandvägg eller en proxy, eller om referensfältet är inställt på de angivna domänerna (giltig domännamnslista) är ogiltig referensvariabel inställd på tom sträng, och därmed är dess om villkor inte körs. Men om förfrågan kommer från en domän som inte anges i uttrycket valid_referers som en giltig domän, blockeras den.

SLUTSATS

Var noga med att överväga detta innehåll och förhindra hotlinking på dina Nginx-webbplatser.

Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...