Nginx

URL-i ümberkirjutamise kasutamine

URL-i ümberkirjutamise kasutamine
URL-i ümberkirjutamine on taotluse URL-i muutmise protsess millekski muuks, nagu veebiserveris määratletud. Nginx kasutab moodulit ngx_http_rewrite_module, mis kasutab peamiselt tagasipöördumist, kirjutab direktiivid ümberkirjutamise eesmärgil. Lisaks käesolevas moodulis määratletud direktiividele saab URL-ide hõlpsaks ümberkirjutamiseks kasutada ka kaardidirektiivi, mis on määratletud ngx_http_map_module. Selles juhendis kavatsetakse selgitada kahte peamist direktiivi - tagastamine, ümberkirjutamine ja nende lipud, nende tööpõhimõte ja rakendused.

Eeldused

See juhend on optimeeritud Nginx 1 jaoks.0.1 ja uuemad ning seetõttu on väga soovitatav uuendada olemasolev Nginxi eksemplar eelmainitud või uuemale versioonile. Mõni käsk, süntaks võib siiski töötada mis tahes versiooni puhul enne eelnimetatud versiooni. Kuna see juhend käsitleb URL-i ümberkirjutamist, mis on natuke arenenud teema, eeldatakse, et publik on Nginxi installiprotseduuridest teadlik ja seega pole seda siin selgitatud.

Tagasi

Tagastamine on põhidirektiiv, mis teostab URL-i ümberkirjutamist ja mida on lihtne mõista. See ei kasuta regulaaravaldisi, kuid võib sisaldada muutujaid, mis sõeluvad asukohaploki teelt. Tavaliselt kasutatakse tagastamisdirektiivi päringu URL-i ümbersuunamiseks erinevasse asukohta ja seetõttu kasutab see püsivaks ümbersuunamiseks sageli HTTP-koode nagu 301 ja ajutiseks ümbersuunamiseks 302. Järgmised koodijupid näitavad mõningaid tagasisaatmisdirektiivi kasutamise juhtumeid.

Järgmine koodijupp suunab taotluse URL-i Google'ile.com. Seda saab kasutada kas serveri koodiploki all või asukohakoodiploki all, kuid ümbersuunamislingi vältimiseks veenduge, et te ei suunaks samasse domeeni

tagastage 301 https: // google.com;

Järgmine koodijupp suunab päringu URL-i Nucutasse.com koos teega, näiteks ei sisalda eelmainitud näide ühtegi rada, parameetreid ja seega, olenemata sellest, milline URL aadressiribale trükitakse, suunatakse taotlus Google'i juurdomeeni, samas kui järgmises näites tee koos parameetritega kantakse üle ilma domeeninimeta. Teise võimalusena võib kasutada $ is_args $ args, kuid siis tuleks $ request_uri asemel kasutada muutujat $ uri, kuna $ request_uri sisaldab ka URL-i parameetreid. Kui nõue on suunata ümber sama domeeni erinevasse kataloogi, kasutage tagastamisdirektiivis domeeninime asemel muutujat $ host, näiteks tuuma asemel järgmises näites.com, kasutage teenust $ host.

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

Järgmine koodijupp suunab sissetuleva päringu sama domeeni teekataloogi ja skeemi, mis tähendab, kui järgmist koodilõiku kasutatakse veebisaidil http: // Linux.com ja kui külastaja esitas sellele taotluse, suunatakse see teekonna kataloogi ja seetõttu on järgmisest koodijupist kasu suure hulga veebisaitide haldamisel. Siin määratleb $ skeem URL-i protokolli, näiteks FTP, HTTP, HTTPS, ja $ host määratleb praeguse serveri domeeni koos oma domeenilaiendiga, näiteks Google.com, Linux.Net jne. Kuna see ei tee protokolli ümbersuunamist, näiteks HTTP-st HTTP-desse, tuleb see teha käsitsi nagu teises näites.

return 301 $ skeem: // $ host / path;
kui (skeem $ != "https")
tagastage 301 https: // $ host $ request_uri;

Veel üks kasulik tagasipöördumise direktiivi juhtum on võime lisada regex muutujaid, kuid selleks peaks regulaarne avaldis olema määratud asukohablokis ja see peaks haarama mustri, seejärel saab hõivatud mustri kombineerida tagastamisdirektiivis olemasoleva URL-iga ümbersuunamise eesmärgil, näiteks järgmises näites, kui taotletakse juurdepääsu tekstifailile, siis see haarab tekstifaili nime asukohablokis, seejärel edastab selle nime tagastamisdirektiivile ja seejärel ühendab tagastamisdirektiiv selle olemasoleva URL päringu ümbersuunamiseks teise kataloogi.

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

Uuesti kirjutama

Ümberkirjutamine on direktiiv, mida kasutatakse veebisaitide sisemiste URL-ide ümberkirjutamiseks, ilma et selle aluseks olevat mehhanismi kliendi poolele eksponeeritaks. Süntaksi järgi kasutatakse seda regulaarsete avaldistega. Põhisüntaks toimib järgmiselt. Regex-kohatäide on mõeldud regulaaravaldiste kasutamiseks, asendatav kohatäide sobitatud URL-i asendamiseks, lipp aga täitmise vooga manipuleerimiseks. Praegu on direktiivide ümberkirjutamisel kasutatavad lipud katkised, püsivad, ümbersuunamised ja viimased.

regexi asendamine ümber kirjutama [lipp];

Enne regulaaravaldiste, asenduste, mustrite hõivamise ja muutujaga jätkamist on oluline teada, kuidas lipud panevad Nginxi sisemootori käituma. Ümberkirjutamise direktiivis kasutatakse nelja peamist lippu, nagu varem selgitatud, nende seas saab püsivad ümbersuunamislipud omavahel siduda, kuna mõlemad täidavad sama funktsionaalsust, mis tähendab ümbersuunamist.

Suunamine

Suunamislippu kasutatakse brauseri signaalimiseks, et ümbersuunamine on ajutine, mis on abiks ka otsingumootorite robotitel, et tuvastada leht on ajutiselt eemaldatud ja see taastatakse mõni aeg hiljem oma algsesse asukohta. Kui leht annab märku, et see on 302, ei muuda otsingumootorid selle indekseerimises muudatusi ja seetõttu näevad külastajad otsimisel ikkagi otsingumootori registris algset lehte, see tähendab, et vana lehte ei eemaldata ja lisaks sellele kogu kvalifitseeritud leht , nagu lehe auaste, lingimahla uuele lehele ei edastata.

asukoht /

kirjuta ümber ^ http: // 155.138.XXX.XXX / tee ümbersuunamine;

Püsiv

Püsilippu kasutatakse brauseri signaaliks, et ümbersuunamine on püsiv, mis on abiks ka otsingumootorite indeksoijatel, et tuvastada leht on jäädavalt eemaldatud ja seda EI taastata mõnda aega hiljem oma algsesse asukohta nagu ajutise teisaldamise korral. Kui leht annab märku, et see on 301, teevad otsingumootorid selle indekseerimises mõningaid muudatusi ja seetõttu näevad külastajad otsimisel uue lehe otsingumootori registris vana lehe asemel, mis tähendab, et vana leht asendatakse uue lehega, lisaks kõik kvalifitseeritud, näiteks lehe auaste, linkimahl suunatakse uuele lehele.

asukoht /

kirjuta ümber ^ http: // 155.138.XXX.XXX / tee püsiv;

Regulaaravaldis, mustri jäädvustamine ja muutujad.

Nginx kasutab regulaaravaldist ülekirjutamise direktiiviga palju ja seega on regulaaravaldiste tundmine selles segmendis abiks.  Regulaaravaldisi on mitut tüüpi, kuid Nginx kasutab Perli ühilduvaid regulaaravaldisi ehk PCRE. Regulaaravaldise testimise tööriista omamine on kasulik, et veenduda, et kirjutatud muster tõepoolest toimib eelnevalt, kasutades seda Nginxi konfiguratsioonifailis. Selles juhendis soovitatakse https: // regex101.com / tööriistana ja kõiki järgnevaid näiteid testitakse eelmainitud tööriistaga põhjalikult.

Regulaaravaldised

kirjuta ümber ^ / fr / (.*) $ http: // nucuta.com / $ 1 püsiv;

Tüüpiline ülekirjutusdirektiivi muster läheb nagu ülalpool, see sisaldab alguses ümberkirjutamise direktiivi, seejärel tühikuga regulaaravaldises „muster”, seejärel tühikuga „asendus”, lõpuks „lipp”. Ümberkirjutamise direktiivi saab paigutada mis tahes serverisulgudesse, kuid soovitatav on see alles jätta pärast kuulamis-, serveri_nimi-, juur- ja indeksdirektiivide määramist. Kui külastaja esitab serverile päringu, saadetakse URL koos päringuga ja kui URL sobitatakse ümberkirjutamise direktiivis määratletud regulaaravaldise mustriga, kirjutatakse see asendamise põhjal ümber, siis manipuleeritakse täitmisvooga lipul.

Regulaaravaldise muster kasutab sulgudes gruppi, mille alamstring ekstraktitakse URL-ist välja, kui regex-muster sobib päringu URL-iga, seejärel määratakse URL-ist välja võetud alamstring muutujale Ümberkirjutamise direktiivi “asendamine”. Kui on mitu sobitatud rühma, määratakse iga sobitatud rühma alamstring muutujate jaoks asendusjärjestuses arvuliselt, st esimese sobitatud rühma alamstring määratakse esimesele muutujale ($ 1), alamstringile teine ​​sobitatud rühm määratakse teisele muutujale ($ 2) jne.

4 lipust selgitati selles juhendis juba 2 lippu, ülejäänud on viimased ja purunevad. Enne ülejäänud lippude töö mõistmist on oluline mõista, kuidas Nginxi mootor käitub direktiivide ümberkirjutamise korral. Kui URL saadetakse koos päringuga, proovib Nginxi mootor selle sobitada asukohablokiga. Ükskõik, kas see on sobitatud või mitte, kui komistatakse sellise direktiivi nagu ümberkirjutamine, tagastamine, siis täidetakse see järjestikku. Kui saadetud URL sobitatakse ümberkirjutamise käskkirja mustriga, käivitab Nginxi mootor kogu konfiguratsioonifaili, olenemata sellest, kus ümberkirjutamise direktiiv on tsüklina määratud, kuni äsja ümber kirjutatud URL sobib ühe asukohablokiga.

Järgmist URL-i kasutatakse näitena selle selgitamiseks, kuidas mõlemad lipud muudavad Nginxi mootori käitamise käsu ümberkirjutamise käskkirjaga. Järgmine ekraanipilt portreteerib veebiserveri failistruktuuri.

http: // 155.138.XXX.XXX / brauser / näidis.txt (päringuna saadetud URL)

Kui lippu ei kasutata

Kui lippu ei kasutata, täidetakse mõlemad ümberkirjutamise direktiivid järjestikku; seega muutub järgmise loendi esimene URL kaheksnd, siis 2nd URL muutub viimaseks URL-iks.Taotletakse brauseri kaustas olevat txt-faili, tegelikult serveerib näidist veebiserver.txt-fail juurkaustas. Kuna URL-i ümberkirjutamine on brauserist täielikult eraldatud, ei näe see esitamisel mingit erinevust võrreldes tagastamisdirektiiviga, mis ütleb brauserile, kas taotlus suunati ümber või mitte HTTP-numbriga.

  1. http: // 155.138.XXX.XXX / brauser / näidis.txt
  2. http: // 155.138.XXX.XXX / kroom / proov.txt
  3. http: // 155.138.XXX.XXX / proov.txt
asukoht /

kirjuta ümber ^ / brauser / (.*) $ / kroom / $ 1;
kirjuta ümber ^ / chrome / (.*) $ / $ 1;
asukoht / kroom
proov_failid $ uri $ uri / = 404;

Kui väljaspool asukohablokki on määratud kas vaheaeg või viimane lipp

Kui väljaspool peatusplokki on määratud kas katkestus või viimane lipp, ei parsita ümberkirjutamise direktiive pärast sobitatud ümberkirjutamise direktiivi üldse, näiteks järgmises näites kirjutatakse päringu URL ümber 2nd üks järgmises loendis, olenemata kasutatud lipust, ja kõik.

  1. http: // 155.138.XXX.XXX / brauser / näidis.txt
  2. http: // 155.138.XXX.XXX / kroom / proov.txt
asukoht /

kirjuta ümber ^ / brauser / (.*) $ / chrome / $ 1 viimane; #break
kirjuta ümber ^ / chrome / (.*) $ / $ 1 viimane; #murd
asukoht / kroom
proov_failid $ uri $ uri / = 404;

Kui viimast lippu kasutatakse asukohabloki sees

Kui viimast lippu kasutatakse asukohaploki sees, lõpetab see parsimise enam selle konkreetse asukohaploki sees olevate direktiivide ümberkirjutamise ja sukeldub järgmisesse asukohakirjelduse ümberkirjutamisse, kui ümberkirjutatud URL sobitatakse selle asukohaploki teega, siis täidab see seejärel kirjutage direktiiv selle sisse.

  1. http: // 155.138.XXX.XXX / brauser / näidis.txt
  2. http: // 155.138.XXX.XXX / kroom / proov.txt
  3. http: // 155.138.XXX.XXX / proov.txt
asukoht /
kirjuta ümber ^ / brauser / (.*) $ / kroom / $ 1 viimane;

asukoht / kroom
kirjuta ümber ^ / chrome / (.*) $ / $ 1 viimane;
proov_failid $ uri $ uri / = 404;

Kui asukohaloki sees kasutatakse pausi lippu

Seevastu katkesta lipp, kui see asub asukohablokis, lõpetage enam parside parsimine, kirjutage direktiivid üle, olenemata nende asukohast, kui üks ümberkirjutamise käsk on sobitatud päringu URL-iga ja teenib sisu kasutajale.

asukoht /
kirjuta ümber ^ / brauser / (.*) paus $ / chrome / $ 1;

asukoht / kroom
kirjuta ümber ^ / chrome / (.*) $ / $ 1 vaheaeg;
proov_failid $ uri $ uri / = 404;

Järeldus

URL-ide ümberkirjutamine on veebiserveri URL-ide ümberkirjutamine. Nginx pakub selle võimaldamiseks mitmeid direktiive nagu tagasipöördumise, ümberkirjutamise ja kaardistamise käskkirjad. See juhend näitab, mis on tagastamine ja direktiivide ümberkirjutamine ning kuidas neid kasutatakse URL-ide hõlpsaks ümberkirjutamiseks. Nagu näidetes näidatud, sobib tagastamisdirektiiv brauserist märku andmiseks ja otsingumootor indekseerib lehe asukohta, samas kui ümberkirjutamise direktiiv on kasulik URL-i ümberkirjutamise protsessi abstraktseks tegemiseks, ilma et brauser teaks, mis toimub stseeni taga. See on üsna kasulik sisu serveerimisel CDN-i, vahemällu salvestatud serveri kaudu või võrgu muust asukohast. Kasutajad ei tea kunagi, kust see ressurss pärineb, kuna brauser näitab ainult neile antud URL-i.

Kuidas muuta hiirekursori ja kursori suurust, värvi ja skeemi Windows 10-s
Windows 10 hiirekursor ja kursor on operatsioonisüsteemi väga olulised aspektid. Seda võib öelda ka teiste opsüsteemide kohta, nii et tegelikult pole ...
Tasuta ja avatud lähtekoodiga mängumootorid Linuxi mängude arendamiseks
See artikkel hõlmab loetelu tasuta ja avatud lähtekoodiga mängumootoritest, mida saab kasutada 2D- ja 3D-mängude arendamiseks Linuxis. Selliseid mängu...
Tomb Raider for Linuxi õpetus
Shadow of the Tomb Raider on kaheteistkümnes täiendus seeria Tomb Raider - tegevus- ja seiklusmängude frantsiisile, mille on loonud Eidos Montreal. Ni...