Nginx

Kako uporabljati prepisovanje URL-jev

Kako uporabljati prepisovanje URL-jev
Prepisovanje URL-jev je postopek spreminjanja URL-ja zahteve na nekaj drugega, kot je določeno v spletnem strežniku. Nginx uporablja modul ngx_http_rewrite_module, ki v glavnem uporablja smernice return, rewrite za prepisovanje. Poleg teh direktiv, opredeljenih v tem modulu, lahko tudi direktivo map, definirano v ngx_http_map_module, za enostavno prepisovanje URL-jev. Ta priročnik naj bi razložil približno dve glavni direktivi - vrnitev, prepisovanje in njihove zastave, kako delujejo in njihove aplikacije.

Pogoji

Ta priročnik je optimiziran za Nginx 1.0.1 in novejše, zato je zelo priporočljivo posodobiti obstoječi primerek Nginx na prej omenjeno ali novejšo različico. Vendar lahko nekateri ukazi, sintakse še vedno delujejo za katero koli različico pred omenjeno različico. Ker gre v tem priročniku za prepisovanje URL-jev, kar je nekoliko napredna tema, predvideva, da je občinstvo seznanjeno s postopkom namestitve Nginxa, zato tukaj ni razloženo.

Vrni se

Vrnitev je osnovna direktiva, ki izvaja prepisovanje URL-jev in je enostavna za razumevanje. Ne uporablja regularnih izrazov, lahko pa vključuje spremenljivke za razčlenitev, zajete s poti bloka lokacije. Ponavadi se direktiva return uporablja za preusmeritev URL-ja zahteve na drugo lokacijo in zato pogosto uporablja kode HTTP, kot sta 301 za trajno preusmeritev in 302 za začasno preusmeritev. Naslednji delčki kode prikazujejo nekatere primere uporabe direktive return.

Naslednji delček kode preusmeri URL zahteve na Google.com. Uporablja se lahko neposredno pod blokom strežniške kode ali pod blokom lokacijske kode, vendar ne preusmerjajte na isto domeno, da se izognete preusmeritveni zanki

vrni 301 https: // google.com;

Naslednji delček kode preusmeri URL zahteve na Nucuta.com skupaj s potjo, na primer prej omenjeni primer ne vsebuje nobene poti, parametrov, zato je ne glede na to, kateri URL vtipkate v naslovno vrstico, zahteva preusmerjena v Googlovo korensko domeno, v naslednjem primeru pa pot se skupaj s parametri prenese brez imena domene. Lahko pa uporabite tudi $ is_args $ args, potem pa namesto $ request_uri uporabite spremenljivko $ uri, saj $ request_uri vsebuje tudi parametre URL-ja. Če je zahteva preusmeritev v drug imenik iste domene, potem v direktivi return namesto imena domene uporabite spremenljivko $ host, na primer v naslednjem primeru namesto nucuta.com, uporabite $ host.

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

Naslednji delček kode preusmeri dohodno zahtevo v imenik poti iste domene in shemo, kar pomeni, če je v http: // Linux uporabljen naslednji delček kode.com in če je obiskovalec zanjo poslal zahtevo, se preusmeri v imenik poti, zato je naslednji delček kode uporaben pri upravljanju velikega števila spletnih mest. Tu shema $ definira protokol URL-ja, kot so FTP, HTTP, HTTPS, $ host pa definira trenutno domeno strežnika s pripono domene, kot je Google.com, Linux.Neto itd. Ker ta ne izvaja nobene preusmeritve protokola, na primer s HTTP na HTTP, jo je treba izvesti ročno, kot v drugem primeru.

vrni 301 $ shema: // $ gostitelj / pot;
if ($ shema != "https")
vrni 301 https: // $ host $ request_uri;

Drug uporaben primer uporabe povratne direktive je možnost vključitve spremenljivk regularnega izraza, toda za to je treba regularni izraz podati v bloku lokacije in zajeti vzorec, nato pa lahko zajeti vzorec kombinirate z obstoječim URL-jem v direktivi return za namen preusmeritve, na primer v naslednjem primeru, ko je podana zahteva za dostop do besedilne datoteke, zajame ime besedilne datoteke v bloku lokacije, nato to ime posreduje direktivi o vrnitvi, nato pa direktiva return združi z obstoječo URL za preusmeritev zahteve v drug imenik.

lokacija ~ * ^ / ([^ /]+.txt) $
vrnitev 301 / krom / 1 $;

Prepiši

Rewrite je direktiva, ki se uporablja za notranje prepisovanje URL-jev v spletni strežnik, ne da bi bil osnovni mehanizem izpostavljen odjemalski strani. Glede na njegovo sintakso se uporablja z regularnimi izrazi. Osnovna sintaksa je naslednja. Nadomestni znak regularnega izraza je za uporabo regularnih izrazov, nadomestni nadomestni znak je za nadomestitev ujemajočega se URL-ja, medtem ko je zastavica za manipulacijo toka izvedbe. Trenutno so zastavice, ki se uporabljajo v direktivi o prepisovanju, break, permanent, redirect in last.

prepiši zamenjavo regularnega izraza [zastavica];

Preden nadaljujete z regularnimi izrazi, zamenjavami, zajemanjem vzorcev in spremenljivko, je pomembno vedeti, kako zastavice obnašajo notranji motor Nginxa. Kot smo že pojasnili, obstajajo štiri glavne zastave, ki so bile uporabljene z direktivo o prepisovanju, med njimi pa je mogoče trajne zastavice za preusmeritev seznaniti, saj obe izvajata enako funkcionalnost, kar pomeni preusmeritev.

Preusmeritev

Oznaka preusmeritve se uporablja za označevanje brskalnika, da je preusmeritev začasna, kar je koristno tudi pri pajkih iskalnikov, da prepoznajo, da je stran začasno odmaknjena in bo čez nekaj časa obnovljena na prvotnem mestu. Ko stran sporoči, da je 302, iskalniki ne spreminjajo indeksiranja, zato obiskovalci med iskanjem še vedno vidijo izvirno stran v indeksu iskalnika, kar pomeni, da stara stran ni odstranjena in poleg tega vse kakovostne , na primer uvrstitev strani, sok povezav se ne prenese na novo stran.

lokacija /

prepiši ^ http: // 155.138.XXX.XXX / preusmeritev poti;

Stalno

Stalna zastavica se uporablja za označevanje brskalnika, da je preusmeritev trajna, kar je koristno tudi pri iskalnikih iskalnikov, da prepoznajo stran, ki je trajno odmaknjena, in jo nekaj časa kasneje NE bo obnovila na prvotnem mestu, tako kot pri začasni selitvi. Ko stran sporoči, da je 301, iskalniki nekaj spremenijo pri njenem indeksiranju, zato obiskovalci pri iskanju namesto stare strani vidijo novo stran v indeksu iskalnika, kar pomeni, da se stara stran nadomesti z novo stranjo, usposobljeni, na primer uvrstitev strani, sok povezave se prenesejo na novo stran.

lokacija /

prepiši ^ http: // 155.138.XXX.XXX / pot trajna;

Regularni izraz, zajemanje vzorcev in spremenljivke.

Nginx močno uporablja Regularni izraz z direktivo prepisovanja in tako poznavanje Regularnih izrazov v tem segmentu pride prav.  Obstaja več vrst regularnih izrazov, vendar Nginx uporablja Perl združljive regularne izraze, imenovane PCRE. Uporaba orodja za preizkušanje regularnih izrazov je koristna, da se prepričate, da pisni vzorec vnaprej deluje, če ga uporabite v konfiguracijski datoteki Nginx. Ta vodnik priporoča https: // regex101.com / kot orodje, vsi naslednji primeri pa so temeljito preizkušeni z omenjenim orodjem.

Regularni izrazi

prepiši ^ / fr / (.*) $ http: // nucuta.com / 1 $ za stalno;

Tipičen vzorec direktive o prepisovanju je opisan zgoraj, na začetku vsebuje direktivo o prepisovanju, nato s presledkom "vzorec" v regularnem izrazu, nato s presledkom "zamenjava", nato na koncu "zastavica". Direktivo o prepisovanju lahko postavite kamor koli v oklepaje strežnika, vendar jo je priporočljivo obdržati po določitvi direktiv poslušati, ime_strežnika, koren in indeks. Ko obiskovalec poda zahtevo strežniku, se skupaj z zahtevo pošlje tudi URL, nato pa, če se URL ujema z vzorcem regularnega izraza, določenim v direktivi o prepisovanju, se prepiše na podlagi zamenjave, nato pa se na podlagi izvajanja poteka manipulacija na zastavi.

Vzorec regularnega izraza uporablja oklepaje za označevanje skupine, katere podniz je izvlečen iz URL-ja po ujemanju vzorca regularnega izraza z URL-jem zahteve, nato pa je podniz, izvlečen iz URL-ja, dodeljen spremenljivki v "Zamenjava" direktive o prepisovanju. Če obstaja več ujemajočih se skupin, je podniz vsake ujemajoče se skupine dodeljen spremenljivkam v "nadomestitvi" v številskem vrstnem redu, kar pomeni, da je podniz prve ujemajoče se skupine dodeljen prvi spremenljivki ($ 1), podnizu druga ujemajoča se skupina je dodeljena drugi spremenljivki ($ 2) itd.

Od 4 zastavic sta bili v tem priročniku že razloženi 2 zastavici, preostali sta zadnji in prelomili. Preden razumemo, kako delujejo preostale zastavice, je pomembno razumeti, kako se Nginxov motor obnaša z direktivami o prepisovanju. Ko je URL poslan skupaj z zahtevo, ga Nginx poskuša uskladiti z lokacijskim blokom. Ne glede na to, ali se ujema ali ne, če se naleti na direktivo, kot je prepis, vrnitev, se izvede zaporedno. Če se poslani URL ujema z vzorcem direktive o prepisovanju, motor Nginx izvrši celotno konfiguracijsko datoteko, ne glede na to, kje je direktiva o prepisovanju podana kot zanka, dokler se na novo napisani URL ne ujema z enim od lokacijskih blokov.

Naslednji URL se uporablja kot demonstracija, da se razloži, kako obe zastavici vedita, da se izvršitveni tok mehanizma Nginx obnaša z direktivo prepisovanja. Naslednji posnetek zaslona prikazuje datotečno strukturo spletnega strežnika.

http: // 155.138.XXX.XXX / brskalnik / vzorec.txt (URL je poslan kot zahteva)

Ko se zastava ne uporablja

Ko se zastava ne uporablja, se obe direktivi o prepisovanju izvajata zaporedno; zato se prvi URL na naslednjem seznamu spremeni v 2nd, nato 2nd URL se spremeni v zadnji URL Torej, ko vzorec.txt datoteka v mapi brskalnika, spletni strežnik dejansko streže vzorec.txt v korenski mapi. Ker je prepisovanje URL-jev popolnoma abstraktno stran od brskalnika, ne vidi nobene razlike v strežbi v primerjavi z direktivo o vrnitvi, ki brskalniku navaja, ali je bila zahteva preusmerjena s številko HTTP ali ne.

  1. http: // 155.138.XXX.XXX / brskalnik / vzorec.txt
  2. http: // 155.138.XXX.XXX / krom / vzorec.txt
  3. http: // 155.138.XXX.XXX / vzorec.txt
lokacija /

prepiši ^ / brskalnik / (.*) $ / krom / $ 1;
prepiši ^ / chrome / (.*) $ / $ 1;
lokacija / krom
try_files $ uri $ uri / = 404;

Ko je zunaj lokacijskega bloka določena možnost Prekinitev ali Zadnja zastava

Ko je zunaj lokacijskega bloka podana prekinitev ali zadnja zastava, se direktivi za prepisovanje po ujemajoči se direktivi o prepisovanju sploh ne razčlenijo, na primer v naslednjem primeru se URL zahteve prepiše v 2nd enega na naslednjem seznamu, ne glede na uporabljeno zastavo, in to je to.

  1. http: // 155.138.XXX.XXX / brskalnik / vzorec.txt
  2. http: // 155.138.XXX.XXX / krom / vzorec.txt
lokacija /

prepiši ^ / brskalnik / (.*) $ / chrome / $ 1 zadnji; #break
prepiši ^ / chrome / (.*) $ / $ 1 zadnji; #break
lokacija / krom
try_files $ uri $ uri / = 404;

Ko se zadnja zastava uporablja znotraj bloka lokacije

Ko je zadnja zastava uporabljena znotraj lokacijskega bloka, ustavi več razčlenjevanja direktiv o prepisovanju znotraj tega določenega lokacijskega bloka in se potopi v naslednji blok prepisovanja lokacije, če se prepisani URL ujema s potjo tega lokacijskega bloka, nato pa izvede nadaljnja direktiva o prepisovanju v njej.

  1. http: // 155.138.XXX.XXX / brskalnik / vzorec.txt
  2. http: // 155.138.XXX.XXX / krom / vzorec.txt
  3. http: // 155.138.XXX.XXX / vzorec.txt
lokacija /
prepiši ^ / brskalnik / (.*) $ / chrome / $ 1 zadnji;

lokacija / krom
prepiši ^ / chrome / (.*) $ / $ 1 zadnji;
try_files $ uri $ uri / = 404;

Ko se zastavica Break uporablja znotraj bloka lokacije

Po drugi strani pa zastavico Break, ko je znotraj lokacijskega bloka, nehajte več razčlenjevati direktive o prepisovanju, ne glede na to, kje se nahajajo, ko se ena direktiva o prepisovanju ujema z URL-jem zahteve, in vsebino pošlje uporabniku.

lokacija /
prepiši ^ / brskalnik / (.*) $ / chrome / $ 1 odmor;

lokacija / krom
prepiši ^ / chrome / (.*) $ / $ 1 odmor;
try_files $ uri $ uri / = 404;

Zaključek

Prepisovanje URL-jev je postopek prepisovanja URL-jev znotraj spletnega strežnika. Nginx ponuja več direktiv, kot so return, rewrite, map maps, da to omogoči. Ta priročnik prikazuje, kaj so smernice za vrnitev in prepisovanje ter kako se uporabljajo za enostavno prepisovanje URL-jev. Kot je prikazano v primerih, je direktiva return primerna za signaliziranje brskalnika, iskalnik pa poišče, kje je stran, medtem ko je direktiva rewrite koristna pri povzetku postopka prepisovanja URL-jev, ne da bi brskalnik vedel, kaj se dogaja v ozadju. To je zelo koristno pri prikazovanju vsebine prek CDN-ja, predpomnjenega strežnika ali z druge lokacije v omrežju. Uporabniki nikoli ne vedo, od kod prihaja vir, saj brskalnik prikazuje samo URL, ki jim je bil dan.

Najboljše laboratorijske igre Oculus App
Če ste lastnik slušalk Oculus, morate biti seznanjeni s stranskim nalaganjem. Sideloading je postopek namestitve vsebine, ki ni shranjena v slušalke. ...
10 najboljših iger za igranje v Ubuntuju
Platforma Windows je bila ena izmed prevladujočih platform za igre na srečo zaradi velikega odstotka iger, ki se danes razvijajo za naravno podporo si...
5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...