Príprava
V segmente prípravy sú všeobecné pokyny pre obidve neskôr uvedené metódy zrušené. Je zrejmé, že je dôležité mať konzolu na prístup k serveru cez SSH a správny textový editor ako nano na otvorenie konfiguračného súboru Nginx. Po získaní oboch použite na otvorenie, uloženie a použitie zmien nasledujúce príkazy. Nasledujúce kroky predpokladajú, že používateľ už mal prístup na server cez SSH.
- Zadaním nasledujúceho príkazu otvoríte predvolený konfiguračný súbor Nginx. Ak má každá doména samostatný konfiguračný súbor, namiesto predvoleného názvu použite jej názov.
- V predvolenom alebo konfiguračnom súbore zadajte kódy uvedené v jednej z vyššie uvedených metód. Uistite sa, že používate iba jednu z nich.
- Pomocou nasledujúceho príkazu otestujte konfiguračný súbor pred jeho uvedením do živého režimu.
- Ak je všetko v správnom poradí, pokračujte a zadajte nasledujúci príkaz, aby sa zmeny prejavili.
Metóda 1: Všeobecná metóda
Všeobecná metóda je veľmi ľahko implementovateľná a zrozumiteľná, pretože obsahuje iba blok umiestnenia. Ďalej blokuje požiadavky iba na určité formáty súborov namiesto blokovania všetkých požiadaviek od neplatných odkazujúcich na server.
- Skopírujte nasledujúci útržok kódu.
- Otvorte predvolený súbor nginx, ako je vidieť vo fáze „Príprava“.
- Vložte útržok skopírovaného kódu pod prvý blok umiestnenia nájdený v predvolenom súbore. V nginx je regulárny výraz necitlivý na veľké a malé písmená (~ *) vždy uprednostnený pred lomkou (/), a teda nasledujúci úryvok kódu je vykonaný pred blokom umiestnenia lomky.
- Uložte a zatvorte predvolený súbor. Potom vykonajte 3, 4 kroky vo fáze „Príprava“, aby sa zmeny prejavili.
V nasledujúcom príklade blokuje požiadavky na súbory css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf a eot. V bloku umiestnenia sa nachádza 10 podmienených príkazov. Prvé podmienené vyhlásenie umožňuje priame prezeranie zdrojov prostredníctvom webového prehliadača, 2nd a 3rd bloky umožňujú prezeranie zdrojov prostredníctvom pôvodného webu (holé aj subdomény www), zvyšok blokov okrem vyhľadávania?q a posledný blok umožňujú prístup indexovým prehľadávačom vyhľadávacích strojov a indexujú zdroje, čo je veľmi dôležité na indexovanie obrázkov v obrázkoch google aj v obrázkoch bing. Hľadanie?q umožňuje službe vyrovnávacej pamäte google prístup a ukladanie zdrojov spolu so stránkou, a teda na stránku je možné pristupovať priamo cez výsledok vyhľadávania google, keď je web offline.
umiestnenie ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $if ($ http_referer !~ "^ $")
nastaviť $ pravidlo_0 1 $ pravidlo_0;
if ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
nastaviť $ pravidlo_0 2 $ pravidlo_0;
if ($ http_referer !~ "^ http: // nucuta.com $ ")
nastaviť $ pravidlo_0 3 $ pravidlo_0;
if ($ http_referer !~ * "google.")
nastaviť $ pravidlo_0 4 $ pravidlo_0;
if ($ http_referer !~ * "vyhľadávanie?q = vyrovnávacia pamäť ")
nastaviť $ pravidlo_0 5 $ pravidlo_0;
if ($ http_referer !~ * "msn.„)
nastaviť $ pravidlo_0 6 $ pravidlo_0;
if ($ http_referer !~ * "yahoo.")
nastaviť $ pravidlo_0 7 $ pravidlo_0;
if ($ http_user_agent !~ * "googlebot")
nastaviť $ pravidlo_0 8 $ pravidlo_0;
if ($ http_user_agent !~ * "msnbot")
nastaviť $ pravidlo_0 9 $ pravidlo_0;
if ($ http_user_agent !~ * "usrkávať")
nastaviť $ pravidlo_0 10 $ pravidlo_0;
if ($ rule_0 = "10987654321")
spiatočná 403;
prestávka;
Metóda 2: Metóda Valid_Referers
Platné referery sú najpohodlnejším a všeobecne uznávaným spôsobom ľahkej blokácie neplatných refererov. V porovnaní s predchádzajúcou metódou obsahuje iba dva riadky a je veľmi flexibilný. Je to však trochu ťažké stráviť, pretože sa jedná o regulárne výrazy a iný mechanizmus blokovania požiadaviek od neplatných refererov.
- Skopírujte nasledujúci útržok kódu medzi a na začiatok hlavného bloku umiestnenia.
- Nahraďte zoznam názvov domén povolenými názvami domén, napríklad google, bing alebo vlastnými doménami atď.
- Uložte a zatvorte predvolený súbor. Potom vykonajte 3, 4 kroky vo fáze „Príprava“, aby sa zmeny prejavili.
valid_referers nikto nezablokoval server_names
*.linux.com linux.* www.linux.com / about /~ \.linux \.;
if ($ invalid_referer)
spiatočná 403;
Má hlavne dva bloky kódu, valid_referers a podmienený výraz if s premennou invalid_referer. Predvolene sa tento blok kódu používa medzi a na samom začiatku bloku umiestnenia pred vykonaním iného kódu, ale môže sa použiť aj na akomkoľvek inom mieste, napríklad medzi blokom kódu umiestnenia s regulárnymi výrazmi na detegovať konkrétne formáty súborov, aby bolo blokovanie relevantné pre vyššie uvedené formáty súborov, ako v metóde 1. Ako už bolo vysvetlené, metóda obsahuje iba dva bloky kódu, prvý blok kódu obsahuje 3 kľúčové slová, prvé je „žiadne“, keď v požiadavke HTTP chýba pole refereru, druhé je „blokované“, keď je pole refereru vymazané akýmkoľvek prostredníkom, napríklad proxy serverom, bránou firewall atď., tretie kľúčové slovo je na určenie platných doménových mien.
Keď názov domény začína symbolom „~“, považuje sa to za regulárny výraz, a teda je možné použiť veľmi zložité vzory, ale môže byť ťažké pochopiť, ak regulárne výrazy nie sú dobre známe. Ak vo vyhlásení valid_referers nie je splnená žiadna z podmienok, premenná invalid_referer je nastavená na prázdny reťazec, inak je nastavená na 1, čo to znamená, ak budúca požiadavka neobsahuje žiadne pole refereru alebo ak nginx identifikoval, že pole referera je odstránené firewallom alebo proxy, alebo ak je pole refereru nastavené na určené domény (platný zoznam názvov domén), potom je neplatná premenná refereru nastavená na prázdny reťazec, a teda jeho podmienka if nie je vykonaná. Ak však požiadavka prichádza z domény, ktorá nie je uvedená vo výraze valid_referers ako platná doména, je blokovaná.
ZÁVER
Nezabudnite vziať do úvahy tento obsah a zabrániť Hotlinking na svojich hostených stránkach Nginx.