Příprava
V přípravném segmentu jsou obecné pokyny pro obě později zmíněné metody odstraněny. Je zřejmé, že je důležité mít konzolu pro přístup k serveru přes SSH a správný textový editor jako nano pro otevření konfiguračního souboru Nginx. Jakmile jsou obě získány, použijte následující příkazy k otevření, uložení a použití změn. Následující kroky předpokládají, že uživatel již přistupoval k serveru přes SSH.
- Zadejte následující příkaz a otevřete výchozí konfigurační soubor Nginx. Pokud má každá doména samostatný konfigurační soubor, použijte namísto výchozího její název.
- Ve výchozím nebo konfiguračním souboru zadejte kódy uvedené v jedné z později uvedených metod. Ujistěte se, že používáte pouze jeden z nich.
- Pomocí následujícího příkazu otestujte konfigurační soubor před jeho odesláním do živého režimu.
- Pokud je vše ve správném pořadí, pokračujte a zadejte následující příkaz, aby se změny projevily.
Metoda 1: Obecná metoda
Obecná metoda je velmi snadno implementovatelná a srozumitelná, protože obsahuje pouze blok umístění. Kromě toho blokuje požadavky pouze na určité formáty souborů namísto blokování všech požadavků od neplatných odkazujících na server.
- Zkopírujte následující fragment kódu.
- Otevřete výchozí soubor nginx, jak je vidět ve fázi „Příprava“.
- Vložte zkopírovaný fragment kódu pod první blok umístění nalezený ve výchozím souboru. V nginx je regulární výraz necitlivý na velká a malá písmena (~ *) vždy upřednostňován před lomítkem (/), a proto je následující fragment kódu spuštěn před blokem lomítka lomítka.
- Uložte a zavřete výchozí soubor a poté proveďte 3, 4 kroky ve fázi „Příprava“, aby se změny projevily.
V následujícím příkladu blokuje požadavky na soubory css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf a eot. V bloku umístění je 10 podmíněných příkazů. První podmíněné prohlášení umožňuje přímé prohlížení zdrojů prostřednictvím webového prohlížeče, 2nd a 3rd bloky umožňují prohlížení zdrojů přes původní web (jak nahé, tak subdomény www), zbytek bloků kromě vyhledávání?q a poslední blok umožňují prohledávačům vyhledávačů přístup a indexují zdroje, což je velmi důležité pro indexování obrázků v obrázcích google i obrázcích bing. Výzkum?q umožňuje službě mezipaměti google přístup a ukládání zdrojů spolu se stránkou, a tím lze na stránku přistupovat přímo prostřednictvím výsledku vyhledávání google, když je web offline.
umístění ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $if ($ http_referer !~ "^ $")
nastavit $ pravidlo_0 1 $ pravidlo_0;
if ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
nastavit $ pravidlo_0 2 $ pravidlo_0;
if ($ http_referer !~ "^ http: // nucuta.com $ ")
nastavit $ pravidlo_0 3 $ pravidlo_0;
if ($ http_referer !~ * "google.")
nastavit $ pravidlo_0 4 $ pravidlo_0;
if ($ http_referer !~ * "vyhledávání?q = mezipaměť ")
nastavit $ pravidlo_0 5 $ pravidlo_0;
if ($ http_referer !~ * "msn.")
nastavit $ pravidlo_0 6 $ pravidlo_0;
if ($ http_referer !~ * "yahoo.")
nastavit $ pravidlo_0 7 $ pravidlo_0;
if ($ http_user_agent !~ * "googlebot")
nastavit $ pravidlo_0 8 $ pravidlo_0;
if ($ http_user_agent !~ * "msnbot")
nastavit $ pravidlo_0 9 $ pravidlo_0;
if ($ http_user_agent !~ * "usrkávat")
nastavit $ pravidlo_0 10 $ pravidlo_0;
if ($ rule_0 = "10987654321")
návrat 403;
přestávka;
Metoda 2: Metoda Valid_Referers
Nejpohodlnější je platný odkazovač a široce uznávaná metoda pro snadné blokování neplatných odkazovačů. Obsahuje jen dva řádky ve srovnání s předchozí metodou a je velmi flexibilní. Je to ale trochu těžké strávit, protože jde o regulární výrazy a jiný mechanismus blokování požadavků od neplatných refererů.
- Zkopírujte následující fragment kódu mezi a na samém začátku hlavního bloku umístění.
- Nahraďte seznam názvů domén povolenými názvy domén, například google, bing nebo vlastními doménami atd.
- Uložte a zavřete výchozí soubor a poté proveďte 3, 4 kroky ve fázi „Příprava“, aby se změny projevily.
valid_referers žádný blokovaný server_names
*.linux.com linux.* www.linux.com / o /~ \.linux \.;
if ($ invalid_referer)
návrat 403;
Má hlavně dva bloky kódu, valid_referers a podmíněný výraz if s proměnnou invalid_referer. Ve výchozím nastavení se tento blok kódu používá mezi a na samém začátku bloku umístění před provedením jakéhokoli jiného kódu, ale lze jej použít i na jakémkoli jiném místě, například mezi blokem kódu umístění s regulárními výrazy detekovat konkrétní formáty souborů, aby bylo blokování relevantní pro výše uvedené formáty souborů, jako v metodě 1. Jak bylo vysvětleno dříve, metoda obsahuje pouze dva bloky kódu, první blok kódu obsahuje 3 klíčová slova, první je „žádné“, když v požadavku HTTP chybí pole refereru, druhé je „blokováno“, když je pole refereru odstraněno jakoukoli prostřední stranou, jako je proxy, firewall atd., třetí klíčové slovo je pro zadání platných doménových jmen.
Když název domény začíná symbolem „~“, považuje se to za regulární výraz, a lze tedy použít velmi složité vzory, ale může být obtížné pochopit, pokud regulární výrazy nejsou dobře známy. Pokud v příkazu valid_referers není splněna žádná z podmínek, proměnná invalid_referer je nastavena na prázdný řetězec, jinak je nastavena na 1, co to znamená, pokud nadcházející požadavek neobsahuje žádné pole refereru, nebo pokud nginx zjistil, že pole refereru je odstraněno firewallem nebo proxy serverem, nebo pokud je pole refereru nastaveno na zadané domény (platný seznam názvů domén), pak je neplatná proměnná refereru nastavena na prázdný řetězec, a tedy její podmínka if není provedena. Pokud však požadavek přichází z domény, která není ve výrazu valid_referers uvedena jako platná doména, je blokována.
ZÁVĚR
Nezapomeňte tento obsah zvážit a zabraňte tomu, aby na vašich hostovaných webech Nginx byly hotlinking.