Nginx

Az URL átírásának használata

Az URL átírásának használata
Az URL átírása az a folyamat, amikor a kérés URL-jét másra változtatja, amint azt a webkiszolgáló meghatározza. Az Nginx az ngx_http_rewrite_module modult használja, amely főként visszatérési, átírási irányelveket használ átírás céljából. Az ebben a modulban meghatározott irányelvektől eltekintve az ngx_http_map_module-ban definiált térképirányelv az URL-ek könnyed átírásához is használható. Ez az útmutató két fő irányelvet kíván megmagyarázni - visszaküldés, átírás és zászlóik, működésük és alkalmazásuk.

Előfeltételek

Ez az útmutató Nginx 1-re van optimalizálva.0.1 és újabb verziók, ezért nagyon ajánlott frissíteni a meglévő Nginx példányt az előbb említett vagy újabb verzióra. Egyes parancsok, szintaxisok azonban továbbra is működhetnek bármelyik verziónál a fent említett verzió előtt. Mivel ez az útmutató az URL átírásáról szól, ami egy kicsit haladó téma, feltételezi, hogy a közönség tisztában van az Nginx telepítési eljárásával, és ezért itt nem magyarázzák el.

Visszatérés

A Return az alapvető irányelv, amely URL átírást végez és egyszerűen érthető. Nem használ reguláris kifejezéseket, de tartalmazhat olyan elemeket is, amelyek a helyblokk útvonaláról rögzítve vannak elemzésre. Általában a return utasítást használják a kérelem URL-jének átirányítására egy másik helyre, és ezért gyakran használ olyan HTTP kódokat, mint a 301 az állandó átirányításhoz és a 302 az ideiglenes átirányításhoz. Az alábbi kódrészletek bemutatják a visszatérési irányelv néhány felhasználási esetét.

A következő kódrészlet átirányítja a kérelem URL-jét a Google-hoz.com. Használható akár közvetlenül a kiszolgálói kód blokk alatt, akár egy helykód-blokk alatt, de ügyeljen arra, hogy ne irányítson át ugyanarra a tartományra az átirányítási hurok elkerülése érdekében

return 301 https: // google.com;

A következő kódrészlet átirányítja a kérés URL-jét a Nucutára.com az útvonallal együtt, például a fent említett példa nem tartalmaz semmilyen elérési utat, paramétereket, így függetlenül attól, hogy melyik URL-t írja be a címsorba, a kérelem a Google gyökérdomainjére kerül átirányításra, míg a következő példában: az elérési út és a paraméterek a domain név nélkül kerülnek átvitelre. Alternatív megoldásként a $ is_args $ args használható, de akkor a $ request_uri helyett a $ uri változót kell használni, mivel a $ request_uri az URL paramétereit is tartalmazza. Ha az a követelmény, hogy ugyanazon tartomány egy másik könyvtárába irányítson át, akkor a $ host változót használja a tartománynév helyett a return irányelvben, például a következő példában a nucuta helyett.com, használja a $ host parancsot.

return 301 https: // nucuta.com $ request_uri;

A következő kódrészlet átirányítja a bejövő kérelmet ugyanazon tartomány elérési útvonalának könyvtárába és a sémára, vagyis ha a következő kódrészletet használják a http: // Linux rendszerben.com, és ha egy látogató kérelmet intézett hozzá, akkor az átirányításra kerül az elérési út könyvtárba, és ezért a következő kódrészlet hasznos számos webhely kezelésénél. Itt a $ séma meghatározza az URL protokollját, például FTP, HTTP, HTTPS, a $ gazdagép pedig az aktuális kiszolgáló tartományát határozza meg a tartomány kiterjesztésével, például a Google.com, Linux.Net stb. Mivel ez nem hajt végre protokollátirányítást, például HTTP-ről HTTP-re, manuálisan kell végrehajtani, mint a második példában.

return 301 $ séma: // $ host / path;
ha ($ séma != "https")
return 301 https: // $ host $ request_uri;

A visszatérési irányelv másik hasznos esete a regex változók beépítésének képessége, de ehhez meg kell adni a reguláris kifejezést a helyblokkban, és rögzítenie kell egy mintát, majd a rögzített minta kombinálható a visszatérési irányelv meglévő URL-jével. átirányítás céljából, például a következő példában, amikor egy szöveges fájl elérésére irányuló kérelmet nyújtanak be, akkor a szövegfájl nevét rögzíti a helyblokkban, majd átadja ezt a nevet a visszatérési irányelvnek, majd a visszatérési irányelv egyesíti a meglévővel URL a kérelem átirányításához egy másik könyvtárba.

hely ~ * ^ / ([^ /]+.txt) $
return 301 / chrome / $ 1;

Írja át

Az átírás egy irányelv, amely az URL-ek belső átírására szolgál a webkiszolgálón, anélkül, hogy az alapul szolgáló mechanizmust kitenné az ügyféloldalra. Szintaxisának megfelelően szabályos kifejezésekkel használják. Az alapszintaktika a következő. A regex helyőrző a reguláris kifejezések használatára szolgál, a helyettesítő helyettesíti az egyező URL helyettesítésére, míg a flag a végrehajtás folyamatának manipulálására szolgál. Jelenleg az átírási irányelvben használt zászlók törés, állandóak, átirányítottak és utolsóak.

átírja a regex csere [zászló];

Mielőtt folytatnánk a reguláris kifejezéseket, helyettesítéseket, a minta rögzítését és a változót, fontos tudni, hogy a zászlók hogyan viselkednek a Nginx belső motorján. Négy fő zászló használatos az átírási irányelvvel, amint azt korábban kifejtettük, ezek között állandó, átirányító zászlók párosíthatók, mivel mindkettő ugyanazt a funkciót látja el, vagyis átirányítást jelent.

Átirányítás

Az átirányítási jelzőt használják a böngésző jelzésére, hogy az átirányítás ideiglenes, ami a keresőmotorok számára is hasznos, ha felismerik, hogy az oldal ideiglenesen eltávolodott, és valamivel később visszaáll az eredeti helyére. Amikor az oldal 302-es értéket jelez, a keresőmotorok nem változtatnak az indexelésén, ezért a látogatók kereséskor továbbra is az eredeti oldalt látják a keresőmotor indexében, vagyis a régi oldalt nem távolítják el, és ezen felül az összes minősítettet , mint például az oldalrang, a linklé nem kerül át az új oldalra.

hely /

átírni ^ http: // 155.138.XXX.XXX / útvonal átirányítás;

Állandó

Állandó jelzővel jelzik a böngészőt, hogy az átirányítás végleges, ami a keresőmotorok számára is hasznos, ha felismerik, hogy az oldal véglegesen eltávolodik, és NEM kerül vissza valamikor később az eredeti helyére, mint ideiglenes áthelyezés esetén. Amikor az oldal 301-et jelez, a keresőmotorok változtatnak az indexelésén, ezért a látogatók kereséskor a régi oldal helyett az új oldalt a keresőmotor indexében látják, vagyis a régi oldalt az új oldalra cserélik, ráadásul a minősítettek, például az oldalrang, a linklé átkerülnek az új oldalra.

hely /

átírni ^ http: // 155.138.XXX.XXX / útvonal állandó;

Rendszeres kifejezés, minta rögzítése és változók.

Az Nginx nagymértékben használja a reguláris kifejezést az átírási irányelvvel, és így a reguláris kifejezések ismerete ebben a szegmensben jól jön.  A reguláris kifejezéseknek több típusa létezik, de az Nginx a Perl kompatibilis reguláris kifejezéseket, más néven PCRE-t használja. A rendszeres kifejezés-tesztelő eszköz használatával hasznos megbizonyosodni arról, hogy az írott minta valóban előzetesen működik-e az Nginx konfigurációs fájlban való használatával. Ez az útmutató a https: // regex101 fájlt ajánlja.com / eszközként, és az összes következő példát alaposan teszteljük a fent említett eszközzel.

Reguláris kifejezések

átírni ^ / fr / (.*) $ http: // nucuta.com / $ 1 permanent;

Az átírási irányelv tipikus mintája a fentiek szerint alakul, az elején tartalmazza az átírási irányelvet, majd egy szóközzel a szabályos kifejezésben található „minta”, majd egy szóközzel a „csere”, majd végül a „zászló”. Az átírási irányelv bárhol elhelyezhető a kiszolgáló zárójelében, de ajánlott megtartani a figyelés, a kiszolgáló_neve, a gyökér és az index direktívák megadása után. Amikor egy látogató kérést intéz a szerverhez, egy URL-t küld a kéréssel együtt, majd ha az URL megfelel az átírási irányelvben megadott reguláris kifejezés mintájának, akkor azt a csere alapján írják át, akkor a végrehajtási folyamatot manipulálják a zászlón.

A reguláris kifejezésminta zárójelben jelöli azt a csoportot, amelynek alsztringje kibontásra kerül az URL-ből, amikor a regex mintát illeszti a kérés URL-jéhez, majd az URL-ből kivett alsztringet a változóhoz rendeli a Az átírási irányelv „cseréje”. Ha több egyeztetett csoport van, akkor az egyes illesztett csoportok alsorozatát a „csere” változóhoz számozott sorrendben rendeljük hozzá, vagyis az első egyeztetett csoport alsort az első változóhoz ($ 1), a a második egyeztetett csoportot a második változóhoz rendelik ($ 2), és így tovább.

4 zászló közül 2 zászlót már ismertettek ebben az útmutatóban, a fennmaradóak utoljára és elszakadnak. Mielőtt megértenénk a fennmaradó jelzők működését, fontos megérteni, hogy az Nginx motor hogyan viselkedik az irányelvek átírásával. Amikor egy URL-t kéréssel együtt küldenek, az Nginx motor megpróbálja egy helyblokkhoz illeszteni. Akár megegyezik, akár nem, ha olyan irányelvbe ütköznek, mint az átírás, a visszatérés, akkor azt egymás után hajtják végre. Ha az elküldött URL egyezik az átírási irányelv mintájával, az Nginx motor végrehajtja a teljes konfigurációs fájlt, függetlenül attól, hogy az átírási irányelv hurkként van-e megadva, amíg az újonnan átírt URL meg nem egyezik az egyik helyblokkal.

A következő URL-t bemutatjuk annak bemutatására, hogy mindkét jelző hogyan alakítja az Nginx motor végrehajtási folyamatát az átírási irányelvvel. Az alábbi képernyőkép a webkiszolgáló fájlszerkezetét ábrázolja.

http: // 155.138.XXX.XXX / böngésző / minta.txt (a kérésként elküldött URL)

Ha nem használnak zászlót

Ha nem használ jelzőt, akkor mindkét átírási utasítás végrehajtásra kerül egymás után; ezért a következő lista első URL-je 2-vé váliknd, majd 2nd Az URL az utolsó URL-vé válik, tehát amikor a minta.A böngésző mappájában lévő txt fájlt kérik, a webszerver ténylegesen kiszolgálja a mintát.txt fájl a gyökérmappában. Mivel az URL átírása teljesen elvont a böngészőtől, nem lát különbséget a kiszolgálásban a visszatérési irányelvhez képest, amely meghatározza a böngésző számára, hogy a kérést átirányították-e vagy sem HTTP-számmal.

  1. http: // 155.138.XXX.XXX / böngésző / minta.txt
  2. http: // 155.138.XXX.XXX / króm / minta.txt
  3. http: // 155.138.XXX.XXX / minta.txt
hely /

írd át a ^ / browser / (.*) $ / chrome / $ 1;
írd át a ^ / chrome / (.*) $ / $ 1;
hely / króm
try_files $ uri $ uri / = 404;

Amikor a Szünet vagy az Utolsó jelző meg van adva a helyblokkon kívül

Ha a szünet vagy az utolsó jelző meg van adva a helyblokkon kívül, akkor az egyező átírási irányelv utáni átírási irányelveket egyáltalán nem elemzi, például a következő példában a kérelem URL-jét átírja a 2nd az egyik a következő listában, függetlenül a használt zászlótól, és ennyi.

  1. http: // 155.138.XXX.XXX / böngésző / minta.txt
  2. http: // 155.138.XXX.XXX / króm / minta.txt
hely /

írd át a ^ / browser / (.*) $ / chrome / $ 1 last; #break
írd át a ^ / chrome / (.*) $ / $ 1 utolsó; #törés
hely / króm
try_files $ uri $ uri / = 404;

Amikor az utolsó jelzőt egy helyblokk belsejében használják

Amikor az utolsó jelzőt egy helyblokk belsejében használják, akkor abbahagyja az elemzést, az irányelvek átírása az adott helyblokk belsejében, és a következő helyírási blokkba süllyed, ha az átírt URL megfelel az adott helyblokk útvonalának, akkor végrehajtja a későbbi irányelv átírása benne.

  1. http: // 155.138.XXX.XXX / böngésző / minta.txt
  2. http: // 155.138.XXX.XXX / króm / minta.txt
  3. http: // 155.138.XXX.XXX / minta.txt
hely /
írd át a ^ / browser / (.*) $ / chrome / $ 1 last;

hely / króm
írd át a ^ / chrome / (.*) $ / $ 1 utolsó;
try_files $ uri $ uri / = 404;

Ha a szünetjelzőt egy helyblokk belsejében használják

Másrészt, ha a jelző megszakítása, ha egy helyblokkban van, hagyja abba az elemzést, az irányelvek újraírása, függetlenül attól, hogy hol találhatók, amikor egy átírási irányelv megfelel a kérelem URL-jének, és a tartalmat a felhasználónak szolgálja.

hely /
írd át a ^ / browser / (.*) $ / chrome / $ 1 törés;

hely / króm
írd át a ^ / chrome / (.*) $ / $ 1 törés;
try_files $ uri $ uri / = 404;

Következtetés

Az URL átírása az URL átírásának folyamata a webszerveren belül. Az Nginx többféle irányelvet is tartalmaz, például a visszaküldés, az újraírás, a térképi irányelvek lehetővé tételét. Ez az útmutató bemutatja, hogy mik a visszatérési és átírási irányelvek, és hogyan használják őket az URL-ek könnyed átírásához. Amint az a példákból kitűnik, a visszatérési irányelv alkalmas a böngésző jelzésére, és a keresőmotor bejárja az oldal hollétét, míg az átírási irányelv hasznos az URL átírási folyamatának elvonatkoztatása nélkül, anélkül, hogy a böngésző tudná, mi folyik a színfalak mögött. Ez nagyon hasznos a tartalom CDN-en, gyorsítótárazott kiszolgálón vagy a hálózaton belüli másik helyről történő kiszolgálásakor. A felhasználók soha nem tudják, honnan származik az erőforrás, mivel a böngésző csak a nekik megadott URL-t mutatja.

A legnépszerűbb Oculus App Lab játékok
Ha Oculus fülhallgató-tulajdonos, akkor tisztában kell lennie az oldalsó töltéssel. Az oldaltöltés a nem áruházi tartalom fejhallgatóra történő telepí...
A legjobb 10 játék az Ubuntuban
A Windows platform a játékok egyik domináns platformja volt, mivel a játékokat hatalmas százalékban fejlesztik ma a natív Windows támogatására. Kihívh...
5 legjobb arcade játék Linuxhoz
Manapság a számítógépek komoly gépek, amelyeket játékra használnak. Ha nem sikerül megszerezni az új magas pontszámot, akkor tudni fogja, mire gondolo...