Nginx

Ako používať prepisovanie adries URL

Ako používať prepisovanie adries URL
Prepisovanie adries URL je proces zmeny adresy URL požiadavky na inú, ako je definované vo webovom serveri. Nginx používa modul ngx_http_rewrite_module, ktorý používa hlavne direktívy return, rewrite na účely prepisovania. Okrem týchto direktív definovaných v tomto module je možné na ľahké prepisovanie adries URL použiť aj mapovú smernicu definovanú v ngx_http_map_module. Cieľom tejto príručky je vysvetliť asi 2 hlavné smernice - návrat, prepis a ich príznaky, spôsob ich práce a ich aplikácie.

Predpoklady

Táto príručka je optimalizovaná pre Nginx 1.0.1 a vyššie, a preto sa dôrazne odporúča aktualizovať existujúcu inštanciu Nginx na vyššie uvedenú alebo vyššiu verziu. Niektoré z príkazov, syntaxe však môžu fungovať pre každú verziu pred vyššie uvedenou verziou. Pretože táto príručka je o prepisovaní adries URL, čo je trochu pokročilá téma, predpokladá sa, že publikum vie o postupe inštalácie Nginx, a preto tu nie je vysvetlené.

Návrat

Návrat je základná smernica, ktorá vykonáva prepisovanie adries URL a je ľahko pochopiteľná. Nepoužíva regulárne výrazy, ale môže obsahovať premenné, ktoré sa majú analyzovať, zachytené z cesty bloku umiestnenia. Direktíva return sa zvyčajne používa na presmerovanie adresy URL požiadavky na iné miesto, a preto často používa kódy HTTP ako 301 na trvalé presmerovanie a 302 na dočasné presmerovanie. Nasledujúce úryvky kódu demonštrujú niektoré prípady použitia smernice o vrátení.

Nasledujúci úryvok kódu presmeruje webovú adresu žiadosti na Google.com. Môže byť použitý buď priamo pod blokom kódu servera, alebo pod blokom kódu umiestnenia, ale nepresmerujte ho na tú istú doménu, aby ste sa vyhli presmerovaniu

návrat 301 https: // google.com;

Nasledujúci úryvok kódu presmeruje webovú adresu žiadosti na Nucuta.com spolu s cestou, napríklad vyššie uvedený príklad neobsahuje žiadnu cestu, parametre, a tak bez ohľadu na to, ktorá adresa URL je napísaná do panela s adresou, je požiadavka presmerovaná na koreňovú doménu Google, zatiaľ čo v nasledujúcom príklade cesta spolu s parametrami sa prenáša bez názvu domény. Alternatívne je možné použiť $ is_args $ args, ale potom by sa mala namiesto $ request_uri použiť premenná $ uri, pretože $ request_uri obsahuje aj parametre URL. Ak je požiadavkou presmerovanie do iného adresára tej istej domény, použite v návratovej smernici namiesto názvu domény premennú $ host, napríklad namiesto nucuta v nasledujúcom príklade.sk, použite hostiteľa $.

návrat 301 https: // nucuta.com $ request_uri;

Nasledujúci úryvok kódu presmeruje prichádzajúcu požiadavku do adresára cesty v rovnakej doméne a do schémy, čo znamená, že ak sa v http: // Linux používa nasledujúci úryvok kódu,.com, a ak o to návštevník požiadal, je presmerovaný do adresára path, a preto je pri správe veľkého množstva webových stránok užitočný nasledujúci útržok kódu. Tu schéma $ definuje protokol adresy URL, napríklad FTP, HTTP, HTTPS, a hostiteľ $ definuje doménu aktuálneho servera s príponou domény, napríklad Google.com, Linux.Sieť atď. Pretože sa nevykonáva žiadne presmerovanie protokolu, napríklad z HTTP na HTTP, je potrebné ho vykonať manuálne, ako v druhom príklade.

návratová schéma 301 $: // $ host / cesta;
ak ($ ​​schéma != "https")
návrat 301 https: // $ host $ request_uri;

Ďalším užitočným prípadom použitia direktívy return je schopnosť zahrnúť premenné regulárneho výrazu, ale na to by mal byť regulárny výraz zadaný v bloku umiestnenia a mal by zachytiť vzor, ​​potom je možné zachytený vzor kombinovať s existujúcou adresou URL v návratovej smernici na účely presmerovania, napríklad v nasledujúcom príklade, keď sa urobí žiadosť o prístup k textovému súboru, zachytí sa názov textového súboru v bloku umiestnenia, potom sa tento názov odovzdá smernici pre návrat, potom ju smernica pre návrat kombinuje s existujúcim URL na presmerovanie požiadavky do iného adresára.

umiestnenie ~ * ^ / ([^ /]+.txt) $
spiatočná 301 / chróm / $ 1;

Prepísať

Prepis je smernica používaná na interné prepisovanie adries URL na webovom serveri bez vystavenia základného mechanizmu na strane klienta. Podľa syntaxe sa používa s regulárnymi výrazmi. Základná syntax je nasledovná. Zástupný symbol regulárneho výrazu slúži na používanie regulárnych výrazov, náhradný zástupný symbol slúži na nahradenie zhodnej adresy URL, zatiaľ čo príznak slúži na manipuláciu s tokom vykonávania. V súčasnosti sú príznaky použité v direktíve prepisu zlomené, trvalé, presmerované a posledné.

prepísať nahradenie regulárneho výrazu [vlajka];

Predtým, ako pristúpime k regulárnym výrazom, náhradám, zachytávaniu vzorov a premennej, je dôležité vedieť o tom, ako príznaky spôsobujú, že sa interný engine Nginxu správa. Ako bolo vysvetlené vyššie, s direktívou prepisovania sa používajú štyri hlavné príznaky, medzi nimi trvalé príznaky presmerovania je možné spárovať, pretože obidve vykonávajú rovnakú funkčnosť, čo znamená presmerovanie.

Presmerovanie

Príznak presmerovania sa používa na signalizáciu dočasného presmerovania prehľadávača, čo je tiež užitočné pri prehľadávačoch vyhľadávacích strojov, aby rozpoznali, že stránka je dočasne presunutá preč a o nejaký čas bude obnovená na pôvodnom mieste. Keď stránka signalizuje, že je 302, vyhľadávače nevykonávajú žiadne zmeny v jej indexovaní, a preto sa návštevníkom pri vyhľadávaní stále zobrazuje pôvodná stránka v indexe vyhľadávacieho modulu, čo znamená, že stará stránka nebude odstránená a navyše budú mať všetky kvalifikované stránky. , ako je napríklad hodnotenie stránky, odkaz na novú stránku.

umiestnenie /

prepísať ^ http: // 155.138.XXX.XXX / presmerovanie cesty;

Trvalé

Trvalý príznak sa používa na signalizáciu prehľadávača, že presmerovanie je trvalé, čo je tiež užitočné pri prehľadávačoch vyhľadávacích strojov, aby rozpoznali, že stránka je natrvalo presunutá preč a NIE JE obnovená na pôvodné miesto o nejaký čas neskôr, ako pri dočasnom premiestnení. Keď stránka signalizuje, že je 301, vyhľadávače vykonajú určité zmeny v jej indexovaní, a preto sa návštevníkom pri hľadaní zobrazí nová stránka v indexe vyhľadávacieho nástroja namiesto starej stránky, čo znamená, že stará stránka je nahradená novou stránkou, navyše všetky kvalifikovaní, ako napríklad poradie stránky, odkaz na novú stránku.

umiestnenie /

prepísať ^ http: // 155.138.XXX.XXX / cesta trvalá;

Regulárny výraz, zachytenie vzoru a premenné.

Nginx intenzívne používa regulárny výraz s direktívou prepisovania, a preto sa v tomto segmente hodí vedieť o regulárnych výrazoch.  Existuje niekoľko typov regulárnych výrazov, ale Nginx používa Perl kompatibilné regulárne výrazy aka PCRE. Nástroj na testovanie regulárnych výrazov je užitočný na to, aby ste sa ubezpečili, že napísaný vzor skutočne funguje predtým, ako ho použijete v konfiguračnom súbore Nginx. Táto príručka odporúča https: // regex101.com / ako nástroj a všetky nasledujúce príklady sú vyššie uvedeným nástrojom dôkladne testované.

Regulárne výrazy

prepísať ^ / fr / (.*) $ http: // nucuta.com / $ 1 permanentný;

Typický vzor direktívy prepisovania je uvedený vyššie, na začiatku obsahuje direktívu prepisovania, potom s medzerou „vzor“ v regulárnom výraze, potom s medzerou „náhrada“, nakoniec „príznak“. Direktívu prepisu je možné umiestniť kdekoľvek v hranatých zátvorkách servera, ale odporúča sa zachovať ju po zadaní direktív listen, server_name, root a index. Keď návštevník zadá požiadavku na server, odošle sa spolu s požiadavkou aj adresa URL. Ak je potom adresa URL v zhode so vzorom regulárneho výrazu špecifikovaným v smernici o prepísaní, prepíše sa na základe nahradenia a potom sa s tokom vykonávania manipuluje na základe na vlajke.

Vzor regulárneho výrazu používa zátvorky na označenie skupiny, ktorej podreťazec sa extrahuje z adresy URL pri zhode vzoru regulárneho výrazu s adresou URL požiadavky. Potom sa tento podreťazec vyňatý z adresy URL priradí k premennej v poli „Nahradenie“ smernice o prepísaní. Ak existuje viac zhodných skupín, podreťazec každej zosúladenej skupiny je priradený premenným v „nahradení“ v číselnom poradí, čo znamená, že podreťazec prvej zhodnej skupiny je priradený k prvej premennej ($ 1), podreťazec druhá zhodná skupina je priradená k druhej premennej ($ 2) atď.

Zo 4 vlajok boli v tejto príručke vysvetlené už 2 vlajky, zvyšné sú posledné a zlomené. Pred pochopením toho, ako fungujú zvyšné príznaky, je dôležité pochopiť, ako sa chová motor Nginx s direktívami prepisovania. Keď sa s adresou URL pošle žiadosť, modul Nginx sa ju pokúsi spojiť s blokom umiestnenia. Bez ohľadu na to, či je to zhodné alebo nie, ak sa na smernicu, ako je prepísanie, narazí návrat, vykoná sa postupne. Ak sa odoslaná adresa URL zhoduje so vzorom direktívy prepisovania, motor Nginx vykoná celý konfiguračný súbor bez ohľadu na to, kde je direktíva prepisovania zadaná ako slučka, kým sa novo prepisovaná adresa URL nezhoduje s jedným z blokov umiestnenia.

Nasledujúca adresa URL sa používa ako ukážka na vysvetlenie toho, ako oba príznaky spôsobujú, že sa priebeh vykonávania motora Nginx chová pomocou direktívy prepisu. Nasledujúca snímka obrazovky zobrazuje štruktúru súborov webového servera.

http: // 155.138.XXX.XXX / prehliadač / ukážka.txt (adresa URL odoslaná ako žiadosť)

Keď sa nepoužíva žiadny príznak

Ak sa nepoužije žiadny príznak, obe smernice na prepis sa vykonajú postupne; preto sa prvá adresa URL v nasledujúcom zozname zmení na 2nd, potom 2nd URL sa zmení na poslednú URL, takže keď je ukážka.Vyžaduje sa súbor txt v priečinku prehľadávača, webový server skutočne slúži na ukážku.súbor txt v koreňovom priečinku. Pretože prepisovanie adries URL je úplne abstrahované od prehľadávača, nevidí žiadny rozdiel v poskytovaní v porovnaní so smernicou o návrate, ktorá určuje prehľadávač, či bola požiadavka presmerovaná alebo nie s číslom HTTP.

  1. http: // 155.138.XXX.XXX / prehliadač / ukážka.TXT
  2. http: // 155.138.XXX.XXX / chróm / vzorka.TXT
  3. http: // 155.138.XXX.XXX / vzorka.TXT
miesto /

prepísať ^ / prehliadač / (.*) $ / chróm / $ 1;
prepísať ^ / chrome / (.*) $ / $ 1;
umiestnenie / chróm
try_files $ uri $ uri / = 404;

Keď je mimo bloku umiestnenia zadaný Prerušiť alebo Posledný príznak

Keď je mimo blok umiestnenia zadaný znak prerušenia alebo posledného príznaku, direktívy prepisu po zhodnej direktíve prepisu nie sú vôbec analyzované, napríklad v nasledujúcom príklade je URL žiadosti prepísaná na 2nd jeden v nasledujúcom zozname bez ohľadu na použitý príznak, a je to.

  1. http: // 155.138.XXX.XXX / prehliadač / ukážka.TXT
  2. http: // 155.138.XXX.XXX / chróm / vzorka.TXT
miesto /

prepísať ^ / prehliadač / (.*) $ / chrome / $ 1 posledný; #break
prepísať ^ / chrome / (.*) $ / $ 1 posledný; #break
umiestnenie / chróm
try_files $ uri $ uri / = 404;

Keď sa použije posledný príznak vo vnútri bloku umiestnenia

Keď sa použije posledný príznak vo vnútri bloku umiestnenia, prestane sa už analyzovať prepísať direktívy vo vnútri konkrétneho bloku umiestnenia a vrhne sa do nasledujúceho bloku miesta prepisu, ak je prepísaná adresa URL v zhode s cestou daného bloku umiestnenia, potom vykoná následné prepísanie smernice do nej.

  1. http: // 155.138.XXX.XXX / prehliadač / ukážka.TXT
  2. http: // 155.138.XXX.XXX / chróm / vzorka.TXT
  3. http: // 155.138.XXX.XXX / vzorka.TXT
miesto /
prepísať ^ / prehliadač / (.*) $ / chrome / $ 1 posledný;

umiestnenie / chróm
prepísať ^ / chrome / (.*) $ / $ 1 posledný;
try_files $ uri $ uri / = 404;

Keď sa príznak prerušenia použije vo vnútri bloku umiestnenia

Na druhej strane, príznak prerušenia, keď je vo vnútri bloku umiestnenia, prestane analyzovať direktívy prepisovania bez ohľadu na to, kde sa nachádzajú, keď je jedna direktíva pre prepis porovnaná s adresou URL požiadavky a slúži obsahu používateľovi.

miesto /
prepísať ^ / prehliadač / (.*) $ / chróm / $ 1 prestávka;

umiestnenie / chróm
prepísať ^ / chrome / (.*) $ / $ 1 prestávka;
try_files $ uri $ uri / = 404;

Záver

Prepisovanie adries URL je proces prepisovania adries URL na webovom serveri. Nginx poskytuje niekoľko smerníc, ako je návrat, prepis, mapové smernice, aby to bolo možné. Táto príručka ukazuje, čo sú direktívy pre návrat a prepis a ako sa používajú na ľahké prepisovanie adries URL. Ako je uvedené v príkladoch, návratová smernica je vhodná na signalizáciu prehliadaču a prehľadávač prehľadáva miesto, kde sa stránka nachádza, zatiaľ čo direktíva prepisu je užitočná pri abstrahovaní od procesu prepisovania adries URL bez toho, aby umožňovala prehliadaču vedieť, čo sa deje za scénou. To je celkom užitočné pri poskytovaní obsahu prostredníctvom siete CDN, servera vo vyrovnávacej pamäti alebo z iného miesta v sieti. Používatelia nikdy nevedia, odkiaľ zdroj pochádza, pretože prehľadávač zobrazuje iba adresu URL, ktorá im bola poskytnutá.

Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...
Hry Výukový program Shadow of the Tomb Raider pre Linux
Výukový program Shadow of the Tomb Raider pre Linux
Shadow of the Tomb Raider je dvanásty prírastok do série Tomb Raider - franšíza akčných adventúr vytvorená Eidosom Montrealom. Túto hru prijali kritic...
Hry Ako zvýšiť rýchlosť FPS v systéme Linux?
Ako zvýšiť rýchlosť FPS v systéme Linux?
FPS znamená Počet snímok za sekundu. Úlohou FPS je merať snímkovú frekvenciu pri prehrávaní videa alebo herných výkonoch. Jednoducho povedané, počet n...