Nginx

So blockieren Sie Hotlinking mit Nginx

So blockieren Sie Hotlinking mit Nginx
Nginx ist ein leichtgewichtiger Webserver, der eine riesige Anzahl von Anfragen zu einem bestimmten Zeitpunkt verarbeiten kann, ohne den Server zu belasten. Es enthält ausgefeilte Funktionen wie asynchrone Verarbeitung, Unterstützung für IPv6, Cache-Loader, http/2-Unterstützung, Block-Hotlinking, Thread-Pools, SPDY und SSL und vieles mehr. Eine der wichtigsten Funktionen für jede Website im Allgemeinen ist Block-Hotlinking. Hotlinking ist eine böswillige Praxis, die oft von bestimmten kleinlichen Webmastern durchgeführt wird, wenn sie sich die Bandbreitenkosten nicht leisten können und sie dadurch am Ende woanders herkommen. Dies hindert legitime Webmaster daran, die Bandbreite zu nutzen, für die sie bezahlt haben. Darüber hinaus ist die verknüpfte Ressource möglicherweise für die Benutzer, die die ursprüngliche Website besuchen, nicht verfügbar, wenn die dem ursprünglichen Webmaster zugewiesene Bandbreite aufgebraucht ist und der Websitebesitzer nicht für die übermäßig verbrauchte Bandbreite bezahlt hat. Alles in allem sollte zur Wahrung der Integrität die Verfügbarkeit des Website-Hotlinks eingestellt werden, und dieser Leitfaden zeigt, wie dies mit Leichtigkeit möglich ist.

Vorbereitung

Im Abschnitt Präparation sind die allgemeinen Hinweise für beide später genannten Methoden notiert. Natürlich ist es wichtig, eine Konsole zu haben, um über SSH auf den Server zuzugreifen, und einen geeigneten Texteditor als Nano, um die Nginx-Konfigurationsdatei zu öffnen. Sobald beide erfasst sind, verwenden Sie die folgenden Befehle, um die Änderungen zu öffnen, zu speichern und anzuwenden. Die folgenden Schritte gehen davon aus, dass der Benutzer bereits über SSH auf den Server zugegriffen hat.

nano /etc/nginx/sites-available/default

Methode 1: Allgemeine Methode

Die allgemeine Methode ist sehr einfach zu implementieren und zu verstehen, da sie nur einen Standortblock enthält. Darüber hinaus blockiert es nur Anfragen an bestimmte Dateiformate, anstatt jede Anfrage von ungültigen Verweisern an den Server zu blockieren.

  1. Kopieren Sie den folgenden Codeausschnitt.
  2. Öffnen Sie die Standarddatei von nginx, wie in der Phase "Vorbereitung" zu sehen.
  3. Fügen Sie das kopierte Code-Snippet unter dem ersten Speicherortblock ein, der in der Standarddatei gefunden wurde. In nginx wird die Groß-/Kleinschreibung bei regulären Ausdrücken (~*) immer vor dem Schrägstrich (/) priorisiert, und daher wird der folgende Codeausschnitt vor dem Positionsblock des Schrägstrichs ausgeführt.
  4. Speichern und schließen Sie die Standarddatei und befolgen Sie dann die 3, 4 Schritte in der Phase „Vorbereitung“, um die Änderungen wirksam zu machen.

Im folgenden Beispiel werden Anforderungen an CSS-, GIF-, ICO-, JPEG-, JS-, PNG-, WOFF-, WOFF2-, TTF-, TTC-, OTF- und EOT-Dateien blockiert. Es gibt 10 bedingte Anweisungen unter Standortblock. Die erste bedingte Anweisung ermöglicht die direkte Anzeige der Ressourcen über den Webbrowser, 2nd und 3rd Blöcke ermöglichen die Anzeige der Ressourcen über die ursprüngliche Site (sowohl Naked- als auch www-Subdomains), der Rest der Blöcke außer der Suche?q und der letzte Block ermöglichen Suchmaschinen-Crawlern den Zugriff und die Indizierung der Ressourcen, was sehr wichtig ist, um die Bilder sowohl in Google-Bildern als auch in Bing-Bildern zu indizieren. Die Suche?q ermöglicht dem Google-Cache-Dienst den Zugriff und die Speicherung der Ressourcen zusammen mit der Seite, wodurch die Seite direkt über das Google-Suchergebnis aufgerufen werden kann, wenn die Site offline ist.

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

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

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

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

if ($http_referer !~* "suchen?q=cache")
setze $rule_0 5$rule_0;

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

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

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

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

if ($http_user_agent !~* "schlürfen")
setze $rule_0 10$rule_0;

if ($rule_0 = "10987654321")
zurück 403;
Unterbrechung;

Methode 2: Valid_Referers-Methode

Gültige Referenten sind die bequemste und weithin anerkannte Methode, um ungültige Referenten mit Leichtigkeit zu blockieren. Es enthält im Vergleich zur vorherigen Methode nur zwei Zeilen und ist sehr flexibel. Es ist jedoch etwas schwer zu verdauen, da es sich um reguläre Ausdrücke und einen anderen Mechanismus zum Blockieren von Anfragen von ungültigen Referern handelt.

  1. Kopieren Sie den folgenden Codeausschnitt dazwischen und ganz am Anfang des Hauptstandortblocks.
  2. Ersetzen Sie die Domainnamenliste durch die zulässigen Domainnamen, zum Beispiel google, bing oder Ihre eigenen Domains usw.
  3. Speichern und schließen Sie die Standarddatei und befolgen Sie dann die 3 bis 4 Schritte in der Phase „Vorbereitung“, um die Änderungen wirksam zu machen.

valid_referers keine blockierte server_names

*.Linux.com Linux.* www.Linux.com/über/
~\.Linux\.;
 
if ($invalid_referer)
zurück 403;

Es hat hauptsächlich zwei Codeblöcke, valid_referers und den bedingten if-Ausdruck mit der Variable invalid_referer. Standardmäßig wird dieser Codeblock zwischen und ganz am Anfang des Standortblocks vor der Ausführung eines anderen Codes verwendet, er kann jedoch auch an anderer Stelle verwendet werden, z. B. zwischen einem Standortcodeblock mit regulären Ausdrücken, um bestimmte Dateiformate erkennen, um die Sperrung für die oben genannten Dateiformate relevant zu machen, wie in der Methode 1. Wie bereits erwähnt, enthält die Methode nur zwei Codeblöcke, der erste Codeblock enthält 3 Schlüsselwörter, der erste ist „none“, wenn das Referer-Feld im HTTP-Request fehlt, der zweite ist „blockiert“, wenn das Referer-Feld gelöscht wird durch eine Zwischenpartei, wie z. B. einen Proxy, eine Firewall usw., das dritte Schlüsselwort dient zur Angabe der gültigen Domainnamen.

Wenn der Domainname mit dem Symbol „~“ beginnt, wird er als regulärer Ausdruck betrachtet, und daher können sehr komplexe Muster verwendet werden, aber es kann schwierig sein, sie zu verstehen, wenn reguläre Ausdrücke nicht gut bekannt sind. Wenn keine der Bedingungen in der valid_referers-Anweisung erfüllt ist, wird die Variable invalid_referer auf einen leeren String gesetzt, andernfalls wird sie auf 1 gesetzt durch eine Firewall oder einen Proxy, oder wenn das Referer-Feld auf die angegebenen Domänen (Liste der gültigen Domänennamen) gesetzt ist, dann wird die ungültige Referer-Variable auf einen leeren String gesetzt, und dadurch wird ihre if-Bedingung nicht ausgeführt. Wenn die Anfrage jedoch von einer Domäne kommt, die im Ausdruck valid_referers nicht als gültige Domäne angegeben ist, wird sie blockiert.

FAZIT

Bitte beachten Sie diesen Inhalt und verhindern Sie Hotlinking auf Ihren von Nginx gehosteten Websites.

Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...