Nginx

Jak používat přepisování URL

Jak používat přepisování URL
Přepisování URL je proces změny adresy URL požadavku na něco jiného, ​​jak je definováno na webovém serveru. Nginx používá modul ngx_http_rewrite_module, který používá hlavně příkazy return, rewrite pro přepis. Kromě těchto směrnic definovaných v tomto modulu lze také snadno použít k přepsání adres URL direktivu mapy definovanou v ngx_http_map_module. Tato příručka má v úmyslu vysvětlit asi 2 hlavní směrnice - návrat, přepsání a jejich příznaky, způsob jejich práce a jejich aplikace.

Předpoklady

Tato příručka je optimalizována pro Nginx 1.0.1 a vyšší, a proto se velmi doporučuje aktualizovat existující instanci Nginx na výše uvedenou nebo vyšší verzi. Některé z příkazů, syntaxe však mohou fungovat pro jakoukoli verzi před výše uvedenou verzí. Protože tato příručka je o přepisování adres URL, což je trochu pokročilé téma, předpokládá, že diváci vědí o postupu instalace Nginx, a proto zde není vysvětleno.

Vrátit se

Návrat je základní direktiva, která provádí přepis URL a je snadno srozumitelná. Nepoužívá regulární výrazy, ale může obsahovat proměnné k analýze, zachycené z cesty bloku umístění. Direktiva return se obvykle používá k přesměrování adresy URL požadavku na jiné místo, a proto často používá kódy HTTP jako 301 pro trvalé přesměrování a 302 pro dočasné přesměrování. Následující fragmenty kódu ukazují některé případy použití direktivy return.

Následující fragment kódu přesměruje adresu URL požadavku na Google.com. Může být použit buď přímo pod blokem kódu serveru, nebo pod blokem kódu umístění, ale nepřesměrovávejte do stejné domény, abyste se vyhnuli smyčce přesměrování

vrátit 301 https: // google.com;

Následující fragment kódu přesměruje adresu URL požadavku na Nucuta.com spolu s cestou, například výše uvedený příklad neobsahuje žádnou cestu, parametry, a proto bez ohledu na to, která adresa URL je zadána do adresního řádku, je požadavek přesměrován na kořenovou doménu Google, zatímco v následujícím příkladu cesta se spolu s parametry přenáší bez názvu domény. Alternativně lze použít $ is_args $ args, ale místo $ request_uri by měla být použita proměnná $ uri, protože $ request_uri obsahuje také parametry URL. Pokud je požadavek na přesměrování do jiného adresáře stejné domény, použijte v návratové směrnici namísto názvu domény proměnnou $ host, například namísto nucuta v následujícím příkladu.com, použijte $ host.

vrátit 301 https: // nucuta.com $ request_uri;

Následující fragment kódu přesměruje příchozí požadavek do adresáře cesty ve stejné doméně a schématu, což znamená, pokud se v kódu http: // Linux používá následující fragment kódu.com, a pokud o to návštěvník požádal, je přesměrován do adresáře path, a proto je následující fragment kódu užitečný při správě velkého počtu webových stránek. Zde schéma $ definuje protokol adresy URL, například FTP, HTTP, HTTPS, a hostitel $ definuje doménu aktuálního serveru s příponou domény, například Google.com, Linux.Síť atd. Vzhledem k tomu, že neprovádí žádné přesměrování protokolu, například z HTTP na HTTP, je třeba to provést ručně jako v druhém příkladu.

vrátit 301 $ schéma: // $ host / cesta;
if ($ schéma != "https")
vrátit 301 https: // $ host $ request_uri;

Dalším užitečným případem použití direktivy return je schopnost zahrnout proměnné regulárního výrazu, ale k tomu by měl být v bloku lokace zadán regulární výraz a ten by měl zachytit vzor, ​​poté lze zachycený vzor zkombinovat s existující adresou URL v direktivě return pro účely přesměrování, například v následujícím příkladu, když je podán požadavek na přístup k textovému souboru, zachycuje název textového souboru v bloku umístění, pak předá tento název direktivě return a poté direktiva return ji kombinuje s existujícím URL k přesměrování požadavku do jiného adresáře.

umístění ~ * ^ / ([^ /]+.txt) $
návratnost 301 / chrom / $ 1;

Přepsat

Přepsat je směrnice používaná k internímu přepisování adres URL na webovém serveru, aniž by byl vystaven základní mechanismus na straně klienta. Podle jeho syntaxe se používá s regulárními výrazy. Základní syntaxe je následující. Zástupný symbol regexu je pro použití regulárních výrazů, náhradní zástupný symbol je pro nahrazení shodné adresy URL, zatímco příznak je pro manipulaci s tokem provádění. V tuto chvíli jsou příznaky použité v direktivě přepisu rozbité, trvalé, přesměrované a poslední.

přepsat regex nahrazení [vlajka];

Než přistoupíme k regulárním výrazům, nahrazení, zachycení vzoru a proměnné, je důležité vědět o tom, jak příznaky způsobují, že se interní engine Nginx chová. Jak bylo vysvětleno dříve, u direktivy přepisování se používají čtyři hlavní příznaky, mezi nimi trvalé, lze přesměrovat příznaky přesměrování, protože oba mají stejnou funkci, což znamená přesměrování.

Přesměrování

Příznak přesměrování se používá k signalizaci prohlížeče, že přesměrování je dočasné, což je také užitečné pro prohledávače vyhledávacích strojů, aby rozpoznaly, že stránka je dočasně přesunuta pryč a bude po nějaké době obnovena na původní místo. Když stránka signalizuje, že je 302, vyhledávače neprovádějí žádné změny v indexování, a proto návštěvníci při vyhledávání stále vidí původní stránku v indexu vyhledávače, což znamená, že stará stránka není odstraněna a navíc všechny kvalifikované stránky , například hodnocení stránek, odkaz na novou stránku se nepřenáší.

umístění /

přepsat ^ http: // 155.138.XXX.XXX / cesta přesměrování;

Trvalý

Trvalý příznak se používá k signalizaci, že přesměrování je trvalé, což je také užitečné pro prohledávače vyhledávacích strojů, aby rozpoznaly, že stránka je trvale přesunuta pryč a NENÍ obnovena na původním místě o něco později, jako při dočasném přesunutí. Když stránka signalizuje, že je to 301, vyhledávače provedou nějaké změny v indexování, a proto návštěvníci uvidí při hledání novou stránku v indexu vyhledávače místo staré stránky, což znamená, že stará stránka je nahrazena novou stránkou, navíc všechny kvalifikovaní, jako je pořadí stránek, šťáva z odkazů jsou předáni na novou stránku.

umístění /

přepsat ^ http: // 155.138.XXX.XXX / cesta trvalá;

Regulární výraz, zachycení vzoru a proměnné.

Nginx silně používá regulární výraz s direktivou přepsání, a proto se v tomto segmentu hodí znalost regulárních výrazů.  Existuje několik typů regulárních výrazů, ale Nginx používá Perl kompatibilní regulární výrazy aka PCRE. Mít nástroj pro testování regulárních výrazů je užitečné, abyste se ujistili, že zapsaný vzor skutečně funguje předem, a to pomocí konfiguračního souboru Nginx. Tato příručka doporučuje https: // regex101.com / jako nástroj a všechny následující příklady jsou důkladně otestovány výše uvedeným nástrojem.

Regulární výrazy

přepsat ^ / fr / (.*) $ http: // nucuta.com / $ 1 permanentní;

Typický vzor přepisovací směrnice jde výše, obsahuje na začátku přepisovací direktivu, poté s mezerou „vzor“ v regulárním výrazu, poté s mezerou „nahrazení“, nakonec „příznak“. Direktivu přepsání lze umístit kdekoli v hranatých závorkách serveru, ale doporučuje se ji ponechat po zadání direktiv poslouchat, název_serveru, root a index. Když návštěvník odešle požadavek na server, spolu s požadavkem se odešle adresa URL, pak pokud se adresa URL shoduje se vzorem regulárního výrazu určeným ve směrnici pro přepsání, přepíše se na základě nahrazení a poté se na základě manipulace s tokem zpracování na vlajce.

Vzor regulárního výrazu používá závorky k označení skupiny, jejíž podřetězec je extrahován z adresy URL při porovnání vzoru regulárního výrazu s adresou URL požadavku, poté je tento podřetězec odebraný z adresy URL přiřazen proměnné v „Nahrazení“ přepisovací směrnice. Pokud existuje více shodných skupin, podřetězec každé uzavřené skupiny je přiřazen proměnným v „nahrazení“ v číselném pořadí, což znamená, že podřetězec první uzavřené skupiny je přiřazen první proměnné ($ 1), podřetězec druhá uzavřená skupina je přiřazena druhé proměnné ($ 2) atd.

Ze 4 příznaků byly v této příručce již vysvětleny 2 příznaky, zbývající jsou poslední a zlomené. Než pochopíte, jak fungují zbývající příznaky, je důležité pochopit, jak se modul Nginx chová s direktivami přepsání. Když je adresa URL odeslána spolu s požadavkem, modul Nginx se ji pokusí porovnat s blokem umístění. Ať už se to shoduje nebo ne, pokud dojde k narušení direktivy, jako je přepis, návrat, provede se postupně. Pokud se odeslaná adresa URL shoduje se vzorem přepisovací směrnice, stroj Nginx provede celý konfigurační soubor, bez ohledu na to, kde je přepsaná směrnice zadána jako smyčka, dokud se nově přepsaná URL neshoduje s jedním z bloků umístění.

Následující adresa URL se používá jako ukázka k vysvětlení, jak oba příznaky způsobují, že se tok provádění Nginx enginu chová s direktivou přepsání. Následující snímek obrazovky zobrazuje strukturu souborů webového serveru.

http: // 155.138.XXX.XXX / prohlížeč / ukázka.txt (adresa URL odeslaná jako požadavek)

Když se nepoužívá žádná vlajka

Pokud není použit žádný příznak, jsou obě přepisovací směrnice prováděny postupně; proto se první adresa URL v následujícím seznamu změní na 2nd, pak 2nd URL se změní na poslední URL, takže když je ukázka.Je vyžadován soubor txt ve složce prohlížeče, webový server ve skutečnosti slouží vzorku.txt soubor v kořenové složce. Vzhledem k tomu, že přepisování adres URL je zcela abstrahováno od prohlížeče, nevidí žádný rozdíl v poskytování ve srovnání s návratovou směrnicí, která uvádí prohlížeč, zda byl požadavek přesměrován nebo ne s číslem HTTP.

  1. http: // 155.138.XXX.XXX / prohlížeč / ukázka.txt
  2. http: // 155.138.XXX.XXX / chrom / vzorek.txt
  3. http: // 155.138.XXX.XXX / vzorek.txt
místo /

přepsat ^ / prohlížeč / (.*) $ / chrom / $ 1;
přepsat ^ / chrom / (.*) $ / $ 1;
umístění / chrom
try_files $ uri $ uri / = 404;

Když je mimo blok umístění zadán buď Break, nebo Last Flag

Pokud je mimo blok umístění zadán buď zlomek, nebo poslední příznak, nejsou direktivy přepisu po direktivě shody přepisu vůbec analyzovány, například v následujícím příkladu je URL požadavku přepsánond jeden v následujícím seznamu bez ohledu na použitý příznak, a to je vše.

  1. http: // 155.138.XXX.XXX / prohlížeč / ukázka.txt
  2. http: // 155.138.XXX.XXX / chrom / vzorek.txt
místo /

přepsat ^ / prohlížeč / (.*) $ / chrom / $ 1 poslední; #break
přepsat ^ / chrom / (.*) $ / $ 1 poslední; #break
umístění / chrom
try_files $ uri $ uri / = 404;

Když se použije poslední vlajka uvnitř bloku polohy

Když se použije poslední příznak uvnitř bloku lokace, přestane analyzovat již přepisovací direktivy uvnitř daného bloku lokace a vrhá se do dalšího bloku lokace přepisování, pokud je přepsaná URL shodná s cestou daného lokačního bloku, pak provede následné přepsání směrnice uvnitř ní.

  1. http: // 155.138.XXX.XXX / prohlížeč / ukázka.txt
  2. http: // 155.138.XXX.XXX / chrom / vzorek.txt
  3. http: // 155.138.XXX.XXX / vzorek.txt
místo /
přepsat ^ / prohlížeč / (.*) $ / chrom / $ 1 poslední;

umístění / chrom
přepsat ^ / chrom / (.*) $ / $ 1 poslední;
try_files $ uri $ uri / = 404;

Když je použit příznak přerušení uvnitř bloku polohy

Na druhou stranu, přerušit příznak, když je uvnitř bloku umístění, přestat analyzovat již přepsat směrnice, bez ohledu na to, kde jsou umístěny, když je jedna přepisovací směrnice spárována s URL požadavku a slouží obsah uživateli.

místo /
přepsat ^ / prohlížeč / (.*) $ / chrom / $ 1 přestávka;

umístění / chrom
přepsat ^ / chrom / (.*) $ / $ 1 přestávka;
try_files $ uri $ uri / = 404;

Závěr

Přepisování adres URL je proces přepisování adres URL na webovém serveru. Nginx poskytuje několik direktiv, jako jsou direktivy return, rewrite, map directives, aby to bylo možné. Tato příručka ukazuje, co jsou direktivy pro návrat a přepis a jak se snadno používají k přepisování adres URL. Jak je ukázáno v příkladech, návratová směrnice je vhodná k signalizaci prohlížeče a vyhledávač prohledává umístění stránky, zatímco směrnice o přepisování je užitečná při abstrahování procesu přepisování adres URL, aniž by prohlížeč věděl, co se děje za scénou. To je docela užitečné při poskytování obsahu prostřednictvím sítě CDN, serveru uloženého v mezipaměti nebo z jiného umístění v síti. Uživatelé nikdy neví, odkud zdroj pochází, protože prohlížeč zobrazuje pouze adresu URL, která jim byla dána.

Hry Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
OpenRA je herní engine Libre / Free Real Time Strategy, který obnovuje rané hry Westwood, jako je klasický Command & Conquer: Red Alert. Distribuované...
Hry Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Emulátor Dolphin vám umožní hrát vybrané hry Gamecube a Wii na osobních počítačích se systémem Linux (PC). Jako volně dostupný herní emulátor s otevř...
Hry Jak používat GameConqueror Cheat Engine v Linuxu
Jak používat GameConqueror Cheat Engine v Linuxu
Tento článek popisuje průvodce používáním cheatovacího modulu GameConqueror v systému Linux. Mnoho uživatelů, kteří hrají hry v systému Windows, často...