Nginx

Kako se koristi prepisivanje URL-a

Kako se koristi prepisivanje URL-a
Prepisivanje URL-a postupak je promjene URL-a zahtjeva u nešto drugo kako je definirano na web-poslužitelju. Nginx koristi modul ngx_http_rewrite_module, koji uglavnom koristi smjernice return, rewrite u svrhu prepisivanja. Osim ovih direktiva definiranih u ovom modulu, direktiva map, definirana u ngx_http_map_module, također se može koristiti za lako prepisivanje URL-ova. Ovaj vodič namjerava objasniti oko dvije glavne direktive - povratak, prepisivanje i njihove zastave, način rada i njihove aplikacije.

Preduvjeti

Ovaj je vodič optimiziran za Nginx 1.0.1 i novije verzije, pa se stoga preporuča ažuriranje postojeće instance Nginxa na gore spomenutu ili stariju verziju. Međutim, neke naredbe, sintakse i dalje mogu raditi za bilo koju verziju prije spomenute verzije. Budući da se ovaj vodič odnosi na prepisivanje URL-ova, što je pomalo napredna tema, pretpostavlja se da je publika upoznata s postupkom instalacije Nginxa, pa stoga ovdje nije objašnjeno.

Povratak

Povratak je osnovna smjernica koja vrši prepisivanje URL-a i jednostavna je za razumijevanje. Ne koristi regularne izraze, ali može uključivati ​​varijable za raščlanjivanje, zabilježene s putanje bloka lokacije. Obično se smjernica return koristi za preusmjeravanje URL-a zahtjeva na drugo mjesto, pa stoga često koristi HTTP kodove poput 301 za trajno preusmjeravanje i 302 za privremeno preusmjeravanje. Sljedeći isječci koda prikazuju neke od slučajeva upotrebe direktive return.

Sljedeći isječak koda preusmjerava URL zahtjeva na Google.com. Može se koristiti izravno ispod bloka poslužiteljskog koda ili pod blokom lokacijskog koda, ali pazite da ne preusmjeravate na istu domenu kako biste izbjegli petlju preusmjeravanja

vrati 301 https: // google.com;

Sljedeći isječak koda preusmjerava URL zahtjeva na Nucuta.com zajedno sa stazom, na primjer, spomenuti primjer ne sadrži nijednu putanju, parametre, pa stoga, bez obzira koji se URL upisuje u adresnu traku, zahtjev se preusmjerava na korijensku domenu Googlea, dok u sljedećem primjeru, putanja, zajedno s parametrima, prenose se bez imena domene. Alternativno se mogu koristiti $ is_args $ args, ali tada umjesto $ request_uri treba koristiti varijablu $ uri jer $ request_uri sadrži i parametre URL-a. Ako je uvjet preusmjeravanje na drugi direktorij iste domene, tada upotrijebite varijablu $ host umjesto imena domene u smjernici return, na primjer u sljedećem primjeru umjesto nucuta.com, koristite $ host.

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

Sljedeći isječak koda preusmjerava dolazni zahtjev u direktorij puta iste domene i shemu, što znači da se sljedeći isječak koda koristi u http: // Linux.com, a ako mu je posjetitelj uputio zahtjev, preusmjerava se na direktorij puta, pa je stoga sljedeći isječak koda koristan pri upravljanju velikim brojem web stranica. Ovdje shema $ definira protokol URL-a, poput FTP-a, HTTP-a, HTTPS-a, a $ host definira trenutnu domenu poslužitelja s proširenjem domene, kao što je Google.com, Linux.Net itd. Budući da ovo ne vrši preusmjeravanje protokola, poput HTTP-a na HTTP-ove, to se mora izvršiti ručno kao u drugom primjeru.

vratiti 301 $ shema: // $ host / path;
if ($ shema != "https")
return 301 https: // $ host $ request_uri;

Sljedeća korisna upotreba slučaja return direktive je mogućnost uključivanja regex varijabli, ali za to bi regularni izraz trebao biti naveden u bloku lokacije i trebao bi uhvatiti uzorak, a zatim se uhvaćeni uzorak može kombinirati sa postojećim URL-om u direktivi return u svrhu preusmjeravanja, na primjer u sljedećem primjeru, kada se podnese zahtjev za pristup tekstualnoj datoteci, on bilježi ime tekstualne datoteke u bloku lokacije, zatim prosljeđuje to ime direktivi return, a zatim ga direktiva return kombinira s postojećim URL za preusmjeravanje zahtjeva u drugi direktorij.

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

Prepisati

Prepisivanje je direktiva koja se koristi za interno prepisivanje URL-ova na web poslužitelju bez izlaganja temeljnog mehanizma klijentskoj strani. Prema sintaksi, koristi se s regularnim izrazima. Osnovna sintaksa glasi kako slijedi. Rezervoar regularnog izraza služi za upotrebu regularnih izraza, zamjensko rezervirano mjesto zamjenjuje podudarni URL, dok je zastavica za manipulaciju tijeka izvršenja. Trenutno su zastave korištene u direktivi za prepisivanje break, permanent, redirect i last.

prepisati zamjenu regularnog izraza [zastava];

Prije nego što prijeđete na regularne izraze, zamjene, hvatanje uzorka i varijablu, važno je znati o tome kako zastavice čine da se interni motor Nginxa ponaša. Postoje četiri glavne zastave koje se koriste s direktivom o prepisivanju, kao što je ranije objašnjeno, među njima se trajne, preusmjeravajuće zastavice mogu spojiti zajedno jer obje imaju istu funkciju, što znači preusmjeravanje.

Preusmjeravanje

Oznaka preusmjeravanja koristi se za označavanje preglednika da je preusmjeravanje privremeno, što je također korisno pri pretraživačima pretraživača da prepoznaju da je stranica privremeno odmaknuta i da će se kasnije vratiti na prvobitno mjesto. Kad stranica signalizira da je 302, tražilice ne vrše nikakve promjene u njezinom indeksiranju, pa stoga posjetitelji i dalje vide izvornu stranicu u indeksu tražilice prilikom pretraživanja, što znači da stara stranica nije uklonjena i, uz to, sve kvalitativno , poput ranga stranice, sok od veze ne prosljeđuje se na novu stranicu.

mjesto /

prepiši ^ http: // 155.138.XXX.XXX / preusmjeravanje puta;

Stalno

Trajna zastava koristi se za označavanje preglednika da je preusmjeravanje trajno, što je također korisno pri pretraživačima pretraživača da prepoznaju da je stranica trajno odmaknuta i NEĆE se kasnije vratiti na prvobitno mjesto, poput privremenog premještanja. Kad stranica signalizira da je 301, tražilice unose neke promjene u njezino indeksiranje, pa stoga posjetitelji pri pretraživanju vide novu stranicu u indeksu tražilice umjesto stare, što znači da se stara stranica zamjenjuje novom stranicom, uz to sve kvalificirani, poput ranga stranice, sok od veze prosljeđuju se na novu stranicu.

mjesto /

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

Regularno izražavanje, hvatanje uzorka i varijable.

Nginx intenzivno koristi Regularni izraz s direktivom o prepisivanju, pa je stoga znanje o Regularnim izrazima vrlo korisno u ovom segmentu.  Postoji više vrsta regularnih izraza, ali Nginx koristi Perl kompatibilne regularne izraze zvane PCRE. Imati alat za testiranje regularnih izraza korisno je kako biste bili sigurni da napisani uzorak doista unaprijed funkcionira koristeći ga u Nginx konfiguracijskoj datoteci. Ovaj vodič preporučuje https: // regex101.com / kao alat, a svi sljedeći primjeri temeljito se ispituju gore spomenutim alatom.

Regularni izrazi

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

Tipični obrazac direktive o prepisivanju ide kao gore, sadrži direktivu o prepisivanju na početku, zatim s razmakom "uzorak" u regularnom izrazu, zatim s razmakom "zamjena", pa na kraju "zastava". Direktiva o prepisivanju može se postaviti bilo gdje unutar zagrada poslužitelja, ali preporučuje se da je zadržite nakon što odredite direktive listen, name_name, root i index. Kada posjetitelj uputi zahtjev poslužitelju, URL se šalje zajedno sa zahtjevom, a ako se URL podudara s uzorkom regularnog izraza navedenim u direktivi za prepisivanje, prepisuje se na temelju zamjene, a zatim se izvodi tijek izvršavanja na temelju na zastavi.

Uzorak regularnog izraza koristi zagrade da označi grupu čiji se podniz izvlači iz URL-a nakon podudaranja regularnog izraza s URL-om zahtjeva, a zatim se taj podniz koji je izvađen iz URL-a dodjeljuje varijabli u “Zamjena” direktive o prepisivanju. Ako postoji više podudarnih grupa, podnizi svake podudarne skupine dodijeljuju se varijablama u "zamjeni" brojevnim redoslijedom, što znači da se podniz prve podudarne skupine dodjeljuje prvoj varijabli ($ 1), podniz niza druga podudarna grupa dodjeljuje se drugoj varijabli ($ 2), i tako dalje.

Od 4 zastavice, 2 zastavice su već objašnjene u ovom vodiču, preostale su posljednje i prekidaju se. Prije razumijevanja kako rade preostale zastavice, važno je razumjeti kako se Nginxov motor ponaša s direktivama za prepisivanje. Kada se URL pošalje zajedno sa zahtjevom, Nginx mehanizam pokušava ga uskladiti s blokom lokacije. Bilo da se podudara ili ne, ako se naleti na direktivu poput prepisivanja, return, izvršava se sekvencijalno. Ako se poslani URL podudara s uzorkom direktive za prepisivanje, Nginx engine izvršava cijelu konfiguracijsku datoteku, bez obzira na to gdje je direktiva za prepisivanje navedena kao petlja, sve dok se novo prepisani URL ne podudara s jednim od blokova lokacije.

Sljedeći se URL koristi kao demonstracija kako bi objasnio kako obje zastavice čine da se tijek izvršavanja Nginx motora ponaša s direktivom o prepisivanju. Sljedeća snimka zaslona prikazuje strukturu datoteka web poslužitelja.

http: // 155.138.XXX.XXX / preglednik / uzorak.txt (URL poslan kao zahtjev)

Kad se ne koristi zastava

Kada se ne koristi zastava, obje se direktive za prepisivanje izvršavaju uzastopno; stoga se prvi URL na sljedećem popisu pretvara u 2nd, zatim 2nd URL se pretvara u zadnji URL Dakle, kada se uzorak.traži se txt datoteka u mapi preglednika, web poslužitelj zapravo služi uzorku.txt datoteku u korijenskoj mapi. Budući da je prepisivanje URL-a potpuno apstrahirano dalje od preglednika, ne vidi nikakvu razliku u posluživanju u usporedbi s direktivom o povratu koja navodi pregledniku je li zahtjev preusmjeren s HTTP brojem.

  1. http: // 155.138.XXX.XXX / preglednik / uzorak.txt
  2. http: // 155.138.XXX.XXX / krom / uzorak.txt
  3. http: // 155.138.XXX.XXX / uzorak.txt
lokacija /

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

Kada je Prekid ili Zadnja oznaka navedena izvan bloka lokacije

Kada je prekid ili zadnja zastavica navedena izvan bloka lokacije, direktive o prepisivanju nakon odgovarajuće direktive o prepisivanju uopće se ne raščlanjuju, na primjer u sljedećem primjeru URL zahtjeva se prepisuje u 2nd jedan na sljedećem popisu bez obzira na upotrijebljenu zastavu i to je to.

  1. http: // 155.138.XXX.XXX / preglednik / uzorak.txt
  2. http: // 155.138.XXX.XXX / krom / uzorak.txt
lokacija /

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

Kada se koristi posljednja zastava unutar bloka lokacije

Kada se posljednja zastava koristi unutar bloka lokacije, on prestaje raščlanjivati ​​smjernice za prepisivanje više unutar tog određenog bloka lokacije i upada u sljedeći blok prepisivanja lokacije ako se prepisani URL podudara s putanjom tog bloka lokacije, a zatim izvršava naknadna direktiva o prepisivanju unutar nje.

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

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

Kada se zastava prekida koristi unutar bloka lokacije

Break zastava, s druge strane, kada je unutar bloka lokacije, zaustavite raščlanjivanje više direktiva za prepisivanje, bez obzira na to gdje se nalaze, kada se jedna direktiva za prepisivanje podudara s URL-om zahtjeva i uslugu servira korisniku.

lokacija /
prepiši ^ / browser / (.*) $ / chrome / $ 1 break;

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

Zaključak

Prepisivanje URL-a postupak je prepisivanja URL-ova unutar web poslužitelja. Nginx pruža više direktiva poput return, rewrite, map direktive kako bi to omogućio. Ovaj vodič prikazuje što su smjernice za povratak i prepisivanje te kako se koriste za lako prepisivanje URL-ova. Kao što je prikazano u primjerima, direktiva return prikladna je za signaliziranje preglednika, a tražilica indeksira mjesto boravka stranice, dok je direktiva rewrite korisna za apstrahiranje postupka prepisivanja URL-a, a da preglednik ne zna što se događa iza scene. Ovo je vrlo korisno za posluživanje sadržaja putem CDN-a, predmemoriranog poslužitelja ili s drugog mjesta u mreži. Korisnici nikad ne znaju odakle izvor dolazi, jer preglednik prikazuje samo URL koji im je dan.

Emulirajte klikove mišem lebdeći mišem bez klika u sustavu Windows 10
Korištenje miša ili tipkovnice u pogrešnom držanju pretjerane upotrebe može rezultirati mnogim zdravstvenim problemima, uključujući naprezanje, sindro...
Dodajte geste miša u sustav Windows 10 pomoću ovih besplatnih alata
Posljednjih godina računala i operativni sustavi uvelike su se razvili. Bilo je vrijeme kada su korisnici morali koristiti naredbe za navigaciju kroz ...
Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...