Készítmény
Az előkészítési szegmensben mindkét későbbi módszerre vonatkozó általános utasításokat levesszük. Nyilvánvaló, hogy fontos egy konzol a szerver SSH-n keresztüli eléréséhez, és egy megfelelő szövegszerkesztő nano-ként az Nginx konfigurációs fájl megnyitásához. Miután mindkettőt megszerezte, használja a következő parancsokat a módosítások megnyitásához, mentéséhez és alkalmazásához. A következő lépések feltételezik, hogy a felhasználó SSH-n keresztül már elérte a kiszolgálót.
- Írja be a következő parancsot az Nginx alapértelmezett konfigurációs fájljának megnyitásához. Ha minden tartománynak külön konfigurációs fájlja van, akkor alapértelmezés helyett használja a nevét.
- Az alapértelmezett vagy a konfigurációs fájlba írja be a később említett módszerek egyikében megadott kódokat. Ügyeljen arra, hogy csak az egyiket használja.
- Az alábbi paranccsal tesztelje a konfigurációs fájlt, mielőtt az élő módba állítja.
- Ha minden a megfelelő sorrendben van, folytassa és írja be a következő parancsot a módosítások életbe léptetéséhez.
1. módszer: Általános módszer
Az általános módszer nagyon könnyen megvalósítható és érthető, mivel csak egy helyblokkot tartalmaz. Ezenkívül csak bizonyos fájlformátumokhoz tartozó kérelmeket blokkol, ahelyett, hogy blokkolná az érvénytelen hivatkozók minden kérését a szerverre.
- Másolja a következő kódrészletet.
- Nyissa meg az nginx alapértelmezett fájlját az „Előkészítés” szakaszban látható módon.
- Illessze be a másolt kódrészletet az alapértelmezett fájlban található első helyblokk alá. Az nginx-ben a szabályos kifejezés kis- és nagybetűk (~ *) mindig elsőbbséget élveznek az elővágás (/) előtt, és így a következő kódrészlet végrehajtásra kerül az elővágás perjel helyblokkja előtt.
- Mentse el, és zárja be az alapértelmezett fájlt, majd kövesse a 3, 4 lépéseket az „Előkészítés” szakaszban a módosítások életbe léptetéséhez.
A következő példában blokkolja a css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf és eot fájlok kéréseit. A helyblokk alatt 10 feltételes utasítás található. Az első feltételes utasítás lehetővé teszi az erőforrások közvetlen megtekintését a webböngészőn keresztül, 2nd és 3rd blokkok lehetővé teszik az erőforrások megtekintését az eredeti webhelyen (meztelen és www aldomainek egyaránt), a többi blokk a keresés kivételével?A q és az utolsó blokk lehetővé teszi a keresőmotorok számára, hogy hozzáférjenek az indexhez, és indexeljék az erőforrásokat, ami nagyon fontos a képek indexeléséhez mind a google képekben, mind a képeken. A keresés?q lehetővé teszi a Google gyorsítótár-szolgáltatásának elérését és az erőforrások mentését az oldallal együtt, és ezáltal az oldal közvetlenül elérhető a Google keresési eredményei révén, amikor a webhely offline állapotban van.
hely ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $ha ($ http_referer !~ "^ $")
állítsa $ rule_0 1 $ rule_0;
ha ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
állítsa $ rule_0 2 $ rule_0;
ha ($ http_referer !~ "^ http: // nucuta.com $ ")
állítsa be a következőt: $ rule_0 3 $ rule_0;
ha ($ http_referer !~ * "google.")
set $ rule_0 4 $ rule_0;
ha ($ http_referer !~ * "keresés?q = gyorsítótár ")
állítsa $ rule_0 5 $ rule_0;
ha ($ http_referer !~ * "msn.")
állítsa be a következőt: $ rule_0 6 $ rule_0;
ha ($ http_referer !~ * "yahoo.")
set $ rule_0 7 $ rule_0;
ha ($ http_user_agent !~ * "googlebot")
set $ rule_0 8 $ rule_0;
ha ($ http_user_agent !~ * "msnbot")
set $ rule_0 9 $ rule_0;
ha ($ http_user_agent !~ * "slurp")
set $ rule_0 10 $ rule_0;
if ($ rule_0 = "10987654321")
visszatérés 403;
szünet;
2. módszer: Valid_Referers módszer
Az érvényes hivatkozók a legkényelmesebbek, és a széles körben elismert módszer az érvénytelen hivatkozók könnyebb blokkolására. Az előző módszerhez képest csak két sort tartalmaz, és nagyon rugalmas. Kicsit nehéz azonban megemészteni, mivel rendszeres kifejezéseket tartalmaz, és más mechanizmust tartalmaz az érvénytelen hivatkozóktól érkező kérések blokkolásához.
- Másolja a következő kódrészletet a fő helyblokk közé és közé.
- Cserélje le a domain névlistát az engedélyezett domain nevekre, például google, bing, vagy saját domainjeire stb.
- Mentse el, és zárja be az alapértelmezett fájlt, majd kövesse a 3, 4 lépéseket az „Előkészítés” szakaszban a módosítások életbe léptetéséhez.
valid_referers nincs letiltva a kiszolgáló_nevek
*.linux.com linux.* www.linux.com / about /~ \.linux \.;
if ($ invalid_referer)
visszatérés 403;
Főleg két kódblokkja van, valid_referers, és az if feltételes kifejezés érvénytelen_referer változóval. Alapértelmezés szerint ezt a kódblokkot a köztük és a helyblokk legelején használják, mielőtt bármilyen más kódot végrehajtanának, de használható bármely más helyen is, például egy helykódblokk között, rendszeres kifejezésekkel észleljen bizonyos fájlformátumokat, hogy a blokkolás releváns legyen a fent említett fájlformátumok számára, az 1. módszer szerint. Mint korábban kifejtettük, a módszer csak két kódblokkot tartalmaz, az első kódblokk 3 kulcsszót tartalmaz, az első „nincs”, ha a hivatkozó mező hiányzik a HTTP-kérésből, a második „blokkolva” van, ha a hivatkozó mező törlődik bármilyen középső fél, például proxy, tűzfal stb., a harmadik kulcsszó az érvényes domainnevek megadására szolgál.
Amikor a domain név „~” szimbólummal kezdődik, akkor azt reguláris kifejezésnek tekintik, és ezért nagyon összetett minták használhatók, de nehéz lehet megérteni, ha a reguláris kifejezéseket nem ismerik jól. Ha a valid_referers utasításban egyik feltétel sem teljesül, az érvénytelen_referer változó üres karaktersorozatra van állítva, különben 1-re áll, mit jelent, ha az érkező kérelem nem tartalmaz referáló mezőt, vagy ha az nginx azonosította, hogy a hivatkozó mező eltávolításra kerül egy tűzfal vagy egy proxy, vagy ha a hivatkozó mező a megadott tartományokra van beállítva (érvényes tartománynévlista), akkor az érvénytelen hivatkozó változó üres karaktersorozatra van állítva, és ezáltal, ha a feltétel nem kerül végrehajtásra. Ha azonban a kérés olyan tartományból érkezik, amelyet nem a valid_referers kifejezés ad meg érvényes tartományként, akkor az blokkolva van.
KÖVETKEZTETÉS
Kérjük, mindenképpen vegye figyelembe ezt a tartalmat, és akadályozza meg a hotlinkelést Nginx által tárolt webhelyein.