Nginx

Hur man använder URL-omskrivning

Hur man använder URL-omskrivning
URL-omskrivning är en process för att ändra begäran URL till något annat som definierats i webbservern. Nginx använder ngx_http_rewrite_module-modulen, som huvudsakligen använder riktnings-, omskrivningsdirektiv för omskrivningsändamål. Utöver dessa direktiv som definieras i denna modul kan kartdirektivet, definierat i ngx_http_map_module, också användas för att enkelt skriva om webbadresser. Den här guiden har för avsikt att förklara om två huvuddirektiv - retur, omskrivning och deras flaggor, hur de fungerar och deras applikationer.

Förutsättningar

Den här guiden är optimerad för Nginx 1.0.1 och högre, och därför rekommenderas det starkt att uppdatera den befintliga Nginx-instansen till ovannämnda eller ovanstående version. Några av kommandona, syntaxerna kan dock fortfarande fungera för vilken version som helst före den tidigare nämnda versionen. Eftersom den här guiden handlar om URL-omskrivning, vilket är lite avancerat ämne, förutsätter det att publiken är medveten om installationsproceduren för Nginx, och det förklaras därför inte här.

Lämna tillbaka

Return är det grundläggande direktivet som utför URL-omskrivning och är enkelt att förstå. Det använder inte reguljära uttryck, men det kan innehålla variabler att analysera, fångade från platsens blockväg. Vanligtvis används returdirektivet för att omdirigera begäran URL till en annan plats, och därför använder den ofta HTTP-koder som 301 för permanent omdirigering och 302 för tillfällig omdirigering. Följande kodavsnitt visar några av användningsfallet i returdirektivet.

Följande kodavsnitt omdirigerar webbadressen till Google.com. Den kan användas antingen direkt under serverkodblocket eller under ett platskodblock, men se till att inte omdirigera till samma domän för att undvika omdirigeringsslinga

returnera 301 https: // google.com;

Följande kodavsnitt omdirigerar begärans URL till Nucuta.com tillsammans med sökvägen, till exempel innehåller ovannämnda exempel ingen sökväg, parametrar, och därmed oavsett vilken URL som skrivs i adressfältet, omdirigeras begäran till rotdomänen för Google, medan i följande exempel, sökvägen överförs tillsammans med parametrarna utan domännamnet. Alternativt kan $ is_args $ args användas, men sedan istället för $ request_uri bör $ uri-variabel användas eftersom $ request_uri också innehåller parametrar för URL. Om kravet är att omdirigera till en annan katalog av samma domän, använd sedan $ värdvariabel istället för domännamnet i returdirektivet, till exempel i följande exempel istället för nucuta.com, använd $ host.

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

Följande kodavsnitt omdirigerar den inkommande begäran till sökkatalogen för samma domän och schemat, vilket innebär att följande kodavsnitt används i http: // Linux.com, och om en besökare gjorde en begäran till den omdirigeras den till sökvägsregistret, och därför är följande kodavsnitt användbart när du hanterar ett stort antal webbplatser. Här definierar $ -schemat protokoll för URL, till exempel FTP, HTTP, HTTPS, och $ värd definierar den aktuella servern domän med dess domänförlängning, som Google.com, Linux.Nät etc. Eftersom detta inte utför någon omdirigering av protokoll, till exempel från HTTP till HTTP, måste det göras manuellt som i det andra exemplet.

returnera 301 $ schema: // $ host / path;
if ($ schema != "https")
returnera 301 https: // $ host $ request_uri;

Ett annat användbart användningsfall för returdirektivet är möjligheten att inkludera regex-variabler, men för det bör det reguljära uttrycket specificeras i platsblocket och det ska fånga ett mönster, då kan det fångade mönstret kombineras med den befintliga URL-en i returdirektivet i omdirigeringssyfte, till exempel i följande exempel, när en begäran görs om att få åtkomst till en textfil, fångar den textfilens namn i platsblock, sedan skickar det namnet till returdirektivet, sedan kombinerar returdirektivet det med det befintliga URL för att omdirigera begäran till en annan katalog.

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

Skriva om

Omskrivning är ett direktiv som används för att skriva om webbadresser internt på webbservern utan att den underliggande mekanismen exponeras för klientsidan. Enligt syntaxen används den med reguljära uttryck. Den grundläggande syntaxen följer. Regex-platshållaren är för att använda reguljära uttryck, ersättningsplatshållare är för att ersätta den matchade webbadressen, medan flaggan är för att manipulera flödet av körningen. För närvarande är flaggorna som används i omskrivningsdirektivet bryta, permanenta, omdirigera och sista.

skriv om regex-ersättning [flagga];

Innan du går vidare till reguljära uttryck, utbyten, mönsterupptagning och variabel är det viktigt att veta om hur flaggor gör att den interna motorn i Nginx beter sig. Det finns fyra huvudflaggor som används med omskrivningsdirektivet som förklarats tidigare, bland dem kan permanenta omdirigeringsflaggor paras ihop eftersom båda utför samma funktion, vilket betyder omdirigering.

Dirigera om

Omdirigeringsflaggan används för att signalera webbläsaren att omdirigeringen är tillfällig, vilket också är till hjälp för sökmotors sökrobotar att känna igen sidan är tillfälligt flyttad och kommer att återställas på sin ursprungliga plats en tid senare. När sidan signalerar att den är 302 gör sökmotorerna inga ändringar i indexeringen, och därför ser besökarna fortfarande den ursprungliga sidan i sökmotorindex när de söker, vilket innebär att den gamla sidan inte tas bort och dessutom alla kvalificerade , som sidrankning, skickas inte länkjuice till den nya sidan.

plats /

skriv om ^ http: // 155.138.XXX.XXX / omdirigering av sökväg;

Permanent

Permanent flagga används för att signalera webbläsaren att omdirigeringen är permanent, vilket också är användbart för sökmotors sökrobotar att känna igen att sidan flyttas permanent och kommer INTE att återställas på sin ursprungliga plats en tid senare som med tillfällig flyttning. När sidan signalerar att den är 301 gör sökmotorerna några ändringar i indexeringen, och därför ser besökarna den nya sidan i sökmotorindex istället för den gamla sidan när de söker, vilket innebär att den gamla sidan ersätts med den nya sidan, dessutom alla de kvalificerade, som sidrankning, länkjuice skickas till den nya sidan.

plats /

skriv om ^ http: // 155.138.XXX.XXX / permanent väg;

Regeluttryck, mönsterupptagning och variabler.

Nginx använder regelbundet uttryck kraftigt med omskrivningsdirektivet, och därmed kan kunskap om reguljära uttryck vara till nytta i detta segment.  Det finns flera typer av reguljära uttryck, men Nginx använder Perl Compatible Regular Expressias aka PCRE. Att ha ett testverktyg för reguljära uttryck är användbart för att säkerställa att det skrivna mönstret verkligen fungerar i förväg med det i Nginx-konfigurationsfilen. Den här guiden rekommenderar https: // regex101.com / som verktyget, och alla följande exempel testas noggrant med ovannämnda verktyg.

Vanliga uttryck

skriv om ^ / fr / (.*) $ http: // nucuta.com / $ 1 permanent;

Ett typiskt mönster för omskrivningsdirektiv går som ovan, det innehåller omskrivningsdirektivet i början, sedan med ett mellanslag "mönstret" i reguljärt uttryck, sedan med ett mellanslag "ersättare", och slutligen "flaggan". Omskrivningsdirektivet kan placeras var som helst inom serverfästena, men rekommenderas att behålla det efter att ha specificerat lyssnings-, servernamns-, rot- och indexdirektiv. När en besökare gör en förfrågan till servern skickas en URL tillsammans med begäran. Om URL: en matchas med det vanliga uttrycksmönstret som anges i omskrivningsdirektivet, skrivs det om baserat på ersättningen, så hanteras körningsflödet baserat på flaggan.

Regeluttrycksmönstret använder parenteser för att ange gruppen, vars understräng extraheras ur URL: en när den matchar regexmönstret med URL: n för begäran, och sedan delsträngen som tas ut ur URL: n tilldelas variabeln i ”Ersättning” av omskrivningsdirektivet. Om det finns flera matchade grupper tilldelas understrängar för varje matchad grupp variablerna i "ersättning" i numeriskt ordning, vilket innebär att understrängen för den första matchade gruppen tilldelas den första variabeln ($ 1), delsträngen för den andra matchade gruppen tilldelas den andra variabeln ($ 2) och så vidare.

Av fyra flaggor förklarades redan 2 flaggor i den här guiden, de återstående är sista och går sönder. Innan du förstår hur de återstående flaggorna fungerar är det viktigt att förstå hur Nginx-motorn beter sig med omskrivningsdirektiv. När en URL skickas tillsammans med en begäran försöker Nginx-motorn att matcha den med ett platsblock. Oavsett om det matchas eller inte, om ett direktiv som omskrivning, retur snubblar på, körs det sekventiellt. Om den skickade URL: en matchas med mönstret i ett omskrivningsdirektiv kör Nginx-motorn hela konfigurationsfilen, oavsett var omskrivningsdirektivet anges som en slinga, tills den nyligen omskrivna URL: en matchar med en av platsblocken.

Följande URL används som en demonstration för att förklara hur båda flaggorna gör körningen av Nginx-motorn beter sig med omskrivningsdirektivet. I följande skärmdump visas filstrukturen på webbservern.

http: // 155.138.XXX.XXX / webbläsare / exempel.txt (webbadressen skickas som en begäran)

När ingen flagga används

När ingen flagga används körs båda omskrivningsdirektiven sekventiellt; därav förvandlas första URL i följande lista till 2nd, sedan 2nd URL blir till den sista URL Så när exemplet.txt-fil i webbläsarmappen begärs serverar faktiskt provet.txt-fil i rotmappen. Eftersom URL-omskrivningen är helt abstraherad från webbläsaren ser den ingen skillnad i visning jämfört med returdirektivet som anger webbläsaren om begäran omdirigerades eller inte med ett HTTP-nummer.

  1. http: // 155.138.XXX.XXX / webbläsare / exempel.Text
  2. http: // 155.138.XXX.XXX / krom / prov.Text
  3. http: // 155.138.XXX.XXX / prov.Text
plats /

skriv om ^ / webbläsare / (.*) $ / krom / $ 1;
skriv om ^ / krom / (.*) $ / $ 1;
plats / krom
try_files $ uri $ uri / = 404;

När antingen Break eller Last Flag specificeras utanför platsblock

När antingen paus eller den sista flaggan anges utanför platsblocket, omskrivningsdirektiven efter det matchade omskrivningsdirektivet analyseras inte alls, till exempel i följande exempel skrivs begäran URL till 2nd en i följande lista oavsett vilken flagga som används, och det är det.

  1. http: // 155.138.XXX.XXX / webbläsare / exempel.Text
  2. http: // 155.138.XXX.XXX / krom / prov.Text
plats /

skriv om ^ / webbläsare / (.*) $ / chrome / $ 1 last; #break
skriv om ^ / krom / (.*) $ / $ 1 senast; #break
plats / krom
try_files $ uri $ uri / = 404;

När den senaste flaggan används inne i ett platsblock

När den sista flaggan används inuti ett platsblock, slutar den att analysera omskrivningsdirektiv längre inuti det specifika platsblocket och kastas in i nästa omskrivningsplaceringsblock om den omskrivna URL: en matchas med sökvägen för det platsblocket, sedan kör den efterföljande omskrivningsdirektiv inuti det.

  1. http: // 155.138.XXX.XXX / webbläsare / exempel.Text
  2. http: // 155.138.XXX.XXX / krom / prov.Text
  3. http: // 155.138.XXX.XXX / prov.Text
plats /
skriv om ^ / webbläsare / (.*) $ / krom / $ 1 sist;

plats / krom
skriv om ^ / krom / (.*) $ / $ 1 sist;
try_files $ uri $ uri / = 404;

När Break Flag används inne i ett platsblock

Bryt flaggan, å andra sidan, när det är inne i ett platsblock, sluta analysera omskrivningsdirektiv, oavsett var de finns, när ett omskrivningsdirektiv matchas med begärans URL och serverar innehållet till användaren.

plats /
skriv om ^ / webbläsare / (.*) $ / krom / $ 1 paus;

plats / krom
skriv om ^ / krom / (.*) $ / $ 1 paus;
try_files $ uri $ uri / = 404;

Slutsats

URL-omskrivning är en process för att skriva om webbadresser inom en webbserver. Nginx tillhandahåller flera direktiv som retur, omskrivning, kartdirektiv för att göra det möjligt. Den här guiden visar vad som är retur- och omskrivningsdirektiv och hur de används för att enkelt skriva om webbadresser. Som visas i exemplen är returdirektivet lämpligt för att signalera webbläsaren och sökmotorn genomsöker var sidan är, medan omskrivningsdirektivet är användbart för att abstrakta omskrivningsprocessen för URL utan att låta webbläsaren veta vad som händer bakom scenen. Detta är ganska användbart för att servera innehåll via en CDN, cachad server eller från en annan plats inom nätverket. Användarna vet aldrig varifrån resursen kommer ifrån eftersom webbläsaren bara visar URL-adressen till dem.

Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...
Så här installerar du League Of Legends på Ubuntu 14.04
Om du gillar League of Legends är det här en möjlighet för dig att testa League of Legends. Observera att LOL stöds på PlayOnLinux om du är en Linux-a...
Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...