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.
- Geben Sie den folgenden Befehl ein, um die Standardkonfigurationsdatei von Nginx zu öffnen. Wenn jede Domäne über eine separate Konfigurationsdatei verfügt, verwenden Sie ihren Namen anstelle des Standardnamens.
- Geben Sie in der Standard- oder Konfigurationsdatei die Codes ein, die in einer der später genannten Methoden angegeben sind. Stellen Sie sicher, dass Sie nur eine davon verwenden.
- Verwenden Sie den folgenden Befehl, um die Konfigurationsdatei zu testen, bevor Sie sie in den Live-Modus verschieben.
- Wenn alles in der richtigen Reihenfolge ist, fahren Sie fort und geben Sie den folgenden Befehl ein, um die Änderungen zu übernehmen, damit sie wirksam werden.
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.
- Kopieren Sie den folgenden Codeausschnitt.
- Öffnen Sie die Standarddatei von nginx, wie in der Phase "Vorbereitung" zu sehen.
- 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.
- 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.
- Kopieren Sie den folgenden Codeausschnitt dazwischen und ganz am Anfang des Hauptstandortblocks.
- Ersetzen Sie die Domainnamenliste durch die zulässigen Domainnamen, zum Beispiel google, bing oder Ihre eigenen Domains usw.
- 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.