Nginx

Hotlinking blokkeren met Nginx

Hotlinking blokkeren met Nginx
Nginx is een lichtgewicht webserver die in staat is een enorm aantal verzoeken op een bepaald moment te verwerken zonder de server bezig te maken. Het bevat geavanceerde functies zoals asynchrone verwerking, ondersteuning voor ipv6, cacheloader, http/2-ondersteuning, hotlinking blokkeren, threadpools, SPDY en SSL, en nog veel meer. Een van de belangrijkste functies voor elke website in het algemeen is hotlinking blokkerenlink. Hotlinking is een kwaadaardige praktijk die vaak wordt uitgevoerd door bepaalde kleine webmasters wanneer ze de bandbreedtekosten niet kunnen betalen, en daardoor uiteindelijk ergens anders vandaan komen. Dit belemmert legitieme webmasters om de bandbreedte te gebruiken waarvoor ze hebben betaald. Bovendien is de gekoppelde bron mogelijk niet beschikbaar voor de gebruikers die de oorspronkelijke website bezoeken, wanneer de bandbreedte die is toegewezen aan de oorspronkelijke webmaster opraakt en de site-eigenaar niet heeft betaald voor de buitensporig verbruikte bandbreedte. Al met al, om de integriteit te behouden, moet de beschikbaarheid van hotlinking op de website worden stopgezet, en deze gids leert hoe u dit gemakkelijk kunt doen.

Voorbereiding

In het voorbereidingssegment worden de algemene instructies voor beide later genoemde methoden verwijderd. Uiteraard is het belangrijk om een ​​console te hebben om via SSH toegang te krijgen tot de server, en een goede teksteditor als nano om het Nginx-configuratiebestand te openen. Zodra beide zijn verkregen, gebruikt u de volgende opdrachten om de wijzigingen te openen, op te slaan en toe te passen:. Bij de volgende stappen wordt ervan uitgegaan dat de gebruiker al toegang heeft tot de server via SSH.

nano /etc/nginx/sites-available/default

Methode 1: Algemene methode

De algemene methode is heel eenvoudig te implementeren en te begrijpen, omdat deze slechts een locatieblok bevat. Bovendien blokkeert het alleen verzoeken naar bepaalde bestandsindelingen in plaats van elk verzoek van ongeldige verwijzers naar de server te blokkeren.

  1. Kopieer het volgende codefragment.
  2. Open het standaardbestand van nginx zoals te zien in de fase "Voorbereiding"”.
  3. Plak het gekopieerde codefragment onder het eerste locatieblok in het standaardbestand. In nginx krijgt de hoofdletterongevoelige reguliere expressie (~*) altijd prioriteit vóór de slash (/), en daarom wordt het volgende codefragment uitgevoerd vóór het locatieblok voor de slash.
  4. Sla het standaardbestand op en sluit het, en volg dan 3, 4 stappen in de fase "Voorbereiding" om de wijzigingen door te voeren.

In het volgende voorbeeld blokkeert het verzoeken naar css-, gif-, ico-, jpeg-, js-, png-, woff-, woff2-, ttf-, ttc-, otf- en eot-bestanden. Er zijn 10 voorwaardelijke instructies onder locatieblok. Met de eerste voorwaardelijke instructie kunnen de bronnen rechtstreeks via de webbrowser worden bekeken,nd en 3rd blokken zorgen ervoor dat de bronnen kunnen worden bekeken via de originele site (zowel naakt als www-subdomeinen), de rest van de blokken behalve de zoekopdracht?q en het laatste blok geven crawlers van zoekmachines toegang tot en indexeren van de bronnen, wat erg belangrijk is om de afbeeldingen in zowel google-afbeeldingen als bing-afbeeldingen te indexeren. De zoektocht?q staat de Google-cacheservice toe om de bronnen samen met de pagina te openen en op te slaan, en daardoor kan de pagina rechtstreeks worden geopend via het Google-zoekresultaat wanneer de site offline is.

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

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

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

if ($http_referer !~* "google.")
stel $rule_0 in 4$rule_0;

if ($http_referer !~* "zoek?q=cache")
stel $rule_0 5$rule_0 in;

if ($http_referer !~* "msn.")
stel $rule_0 6$rule_0 in;

if ($http_referer !~* "yahoo.")
stel $rule_0 7$rule_0 in;

if ($http_user_agent !~* "googlebot")
stel $rule_0 8$rule_0 in;

if ($http_user_agent !~* "msnbot")
stel $rule_0 9$rule_0 in;

if ($http_user_agent !~* "slurpen")
stel $rule_0 10$rule_0 in;

if ($rule_0 = "10987654321")
retour 403;
breken;

Methode 2: Valid_Referers-methode

Geldige verwijzers zijn het handigst en de algemeen erkende methode om ongeldige verwijzers met gemak te blokkeren. Het bevat slechts twee regels in vergelijking met de vorige methode en is zeer flexibel. Het is echter een beetje moeilijk te verteren omdat het om reguliere expressies gaat en een ander mechanisme om verzoeken van ongeldige verwijzers te blokkeren.

  1. Kopieer het volgende codefragment naar tussen en helemaal aan het begin van het hoofdlocatieblok.
  2. Vervang de domeinnaamlijst door de toegestane domeinnamen, bijvoorbeeld google, bing, of uw eigen domeinen etc.
  3. Sla het standaardbestand op en sluit het, en volg vervolgens 3, 4 stappen in de fase "Voorbereiding" om de wijzigingen door te voeren.

valid_referers geen geblokkeerde servernamen

*.linux.com linux.* www.linux.com/over/
~\.linux\.;
 
if ($invalid_referer)
retour 403;

Het heeft voornamelijk twee codeblokken, valid_referers, en de if voorwaardelijke expressie met invalid_referer variabele. Standaard wordt dit codeblok tussen en helemaal aan het begin van het locatieblok gebruikt voordat een andere code wordt uitgevoerd, maar het kan ook op elke andere plaats worden gebruikt, zoals tussen een locatiecodeblok met reguliere expressies om specifieke bestandsindelingen detecteren om de blokkering relevant te maken voor de bovengenoemde bestandsindelingen, zoals in de methode 1. Zoals eerder uitgelegd, bevat de methode slechts twee codeblokken, het eerste codeblok bevat 3 trefwoorden, de eerste is "none" wanneer het verwijzende veld ontbreekt in het HTTP-verzoek, de tweede is "geblokkeerd" wanneer het verwijzende veld wordt verwijderd door een tussenpartij, zoals een proxy, firewall enz., het derde sleutelwoord is voor het specificeren van de geldige domeinnamen.

Wanneer de domeinnaam begint met het "~"-symbool, wordt het beschouwd als een reguliere expressie, en daarom kunnen zeer complexe patronen worden gebruikt, maar het kan moeilijk te begrijpen zijn als reguliere expressies niet goed bekend zijn. Als aan geen van de voorwaarden is voldaan in de valid_referers-instructie, wordt de ongeldige_referer-variabele ingesteld op een lege tekenreeks, anders is deze ingesteld op 1, wat het betekent als het komende verzoek geen verwijzend veld bevat, of als nginx heeft vastgesteld dat het verwijzende veld is verwijderd door een firewall of een proxy, of als het refererveld is ingesteld op de gespecificeerde domeinen (geldige domeinnaamlijst) dan wordt de ongeldige referervariabele ingesteld op een lege string, en daardoor wordt de if-voorwaarde niet uitgevoerd. Als het verzoek echter afkomstig is van een domein dat niet is opgegeven in de valid_referers-expressie als een geldig domein, wordt het geblokkeerd.

CONCLUSIE

Houd rekening met deze inhoud en voorkom hotlinking op uw door Nginx gehoste sites.

Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...
AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...
Middelste muisknop werkt niet in Windows 10
De middelste muis knop helpt u door lange webpagina's en schermen met veel gegevens te bladeren. Als dat stopt, zul je uiteindelijk het toetsenbord ge...