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.
- Typ de volgende opdracht om het standaardconfiguratiebestand van Nginx te openen. Als elk domein een apart configuratiebestand heeft, gebruik dan de naam in plaats van standaard.
- Typ in het standaard- of configuratiebestand de codes vermeld in een van de latere genoemde methoden. Zorg ervoor dat je er maar één van gebruikt.
- Gebruik de volgende opdracht om het configuratiebestand te testen voordat u het naar de live-modus duwt:.
- Als alles in de juiste volgorde staat, ga je gang en typ je de volgende opdracht om de wijzigingen door te voeren:.
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.
- Kopieer het volgende codefragment.
- Open het standaardbestand van nginx zoals te zien in de fase "Voorbereiding"”.
- 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.
- 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.
- Kopieer het volgende codefragment naar tussen en helemaal aan het begin van het hoofdlocatieblok.
- Vervang de domeinnaamlijst door de toegestane domeinnamen, bijvoorbeeld google, bing, of uw eigen domeinen etc.
- 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.