Nginx

Hvordan bruke URL-omskriving

Hvordan bruke URL-omskriving
URL-omskriving er en prosess for å endre forespørselens URL til noe annet som definert i webserveren. Nginx bruker ngx_http_rewrite_module-modulen, som hovedsakelig bruker retur-, omskrivningsdirektiver for omskrivingsformål. Annet enn disse direktivene definert i denne modulen, kan kartdirektivet, definert i ngx_http_map_module, også brukes til å omskrive nettadresser med letthet. Denne veiledningen har til hensikt å forklare om to hoveddirektiver - retur, omskriving og deres flagg, hvordan de fungerer, og deres applikasjoner.

Forutsetninger

Denne guiden er optimalisert for Nginx 1.0.1 og over, og det anbefales derfor sterkt å oppdatere den eksisterende Nginx-forekomsten til ovennevnte eller ovenfor versjon. Imidlertid kan noen av kommandoene, syntaksene fremdeles fungere for hvilken som helst versjon før nevnte versjon. Siden denne veiledningen handler om URL-omskriving, som er litt avansert emne, antar den at publikum er klar over installasjonsprosedyren for Nginx, og det blir derfor ikke forklart her.

Komme tilbake

Return er det grunnleggende direktivet som utfører URL-omskriving og er enkelt å forstå. Det bruker ikke vanlige uttrykk, men det kan inkludere variabler som skal analyseres, fanget fra stedsblokkens vei. Vanligvis brukes returdirektivet for å omdirigere forespørsels-URL til et annet sted, og det bruker derfor ofte HTTP-koder som 301 for permanent omdirigering, og 302 for midlertidig omdirigering. Følgende kodebit viser noen av brukssakene til returdirektivet.

Følgende kodebit omdirigerer forespørselens URL til Google.com. Den kan brukes enten direkte under serverkodeblokken eller under en lokasjonskodeblokk, men pass på at du ikke omdirigerer til samme domene for å unngå omdirigering

returner 301 https: // google.com;

Følgende kodebit omdirigerer forespørselens URL til Nucuta.com sammen med banen, for eksempel inneholder ikke nevnte eksempel noen bane, parametere, og uansett hvilken URL som er skrevet i adressefeltet, blir forespørselen omdirigert til rotdomenet til Google, mens i følgende eksempel, banen, sammen med parametrene overføres uten domenenavnet. Alternativt kan $ is_args $ args brukes, men i stedet for $ request_uri, bør $ uri-variabel brukes som $ request_uri inneholder også parametere for URL. Hvis kravet er å omdirigere til en annen katalog med det samme domenet, bruk deretter $ hostvariabel i stedet for domenenavnet i returdirektivet, for eksempel i følgende eksempel i stedet for nucuta.com, bruk $ host.

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

Følgende kodebit omdirigerer den innkommende forespørselen til banekatalogen til det samme domenet, og skjemaet, noe som betyr at følgende kodebit brukes i http: // Linux.com, og hvis en besøkende gjorde en forespørsel til den, blir den omdirigert til banekatalogen, og derfor er følgende kodebit nyttig når du administrerer et stort antall nettsteder. Her definerer $-ordningen protokollen til URL-en, for eksempel FTP, HTTP, HTTPS, og $ verten definerer den nåværende serverens domene med domenetillegg, for eksempel Google.com, Linux.Netto osv. Siden dette ikke utfører noen omdirigering av protokoller, for eksempel fra HTTP til HTTP, må det gjøres manuelt som i det andre eksemplet.

returner 301 $-ordningen: // $ host / path;
hvis ($ ordning != "https")
returner 301 https: // $ host $ request_uri;

Et annet nyttig brukstilfelle av returdirektiv er muligheten til å inkludere regex-variabler, men for det bør det regulære uttrykket spesifiseres i stedsblokken, og det skal fange et mønster, så kan det fangede mønsteret kombineres med den eksisterende URL-en i returdirektivet for omdirigeringsformål, for eksempel i det følgende eksemplet, når det blir bedt om å få tilgang til en tekstfil, fanger den tekstfilens navn i stedsblokk, og deretter sender det navnet til returdirektivet, og deretter kombinerer returdirektivet det med det eksisterende URL for å omdirigere forespørselen til en annen katalog.

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

Omskrive

Omskriv er et direktiv som brukes til å omskrive nettadresser internt i webserveren uten å utsette den underliggende mekanismen for klientsiden. I henhold til syntaksen brukes den med vanlige uttrykk. Den grunnleggende syntaksen går som følger. Regex plassholder er for bruk av regulære uttrykk, erstatning plassholder er for å erstatte den matchede URL, mens flagget er for å manipulere flyten av utførelsen. For øyeblikket er flaggene som brukes i omskrivningsdirektivet pause, permanente, omdirigere og siste.

skriv om regex-erstatning [flagg];

Før du går videre til regulære uttrykk, erstatninger, mønsterfangst og variabel, er det viktig å vite om hvordan flagg gjør at den interne motoren til Nginx oppfører seg. Det er fire store flagg brukt med omskrivningsdirektivet som forklart tidligere, blant dem kan permanente omdirigeringsflagg sammenkobles da begge utfører samme funksjonalitet, noe som betyr omdirigering.

Viderekobling

Viderekoblingsflagg brukes til å signalisere nettleseren at viderekoblingen er midlertidig, noe som også er nyttig for søkemotorrollere til å gjenkjenne at siden er midlertidig flyttet og vil bli gjenopprettet på sin opprinnelige plassering en stund. Når siden signaliserer at den er 302, gjør ikke søkemotorer noen endringer i indekseringen, og derfor ser besøkende fortsatt den opprinnelige siden i søkemotorindeksen når de søker, noe som betyr at den gamle siden ikke fjernes og i tillegg alle kvalifiserte , for eksempel siderangering, blir ikke lenkesaft sendt til den nye siden.

plassering /

skriv om ^ http: // 155.138.XXX.XXX / sti-omdirigering;

Fast

Permanent flagg brukes til å signalisere nettleseren at viderekoblingen er permanent, noe som også er nyttig for søkemotorsøpere for å gjenkjenne at siden flyttes permanent og vil IKKE bli gjenopprettet på sin opprinnelige plassering en tid senere som ved midlertidig flytting. Når siden signaliserer at den er 301, gjør søkemotorer noen endringer i indekseringen, og derfor ser besøkende den nye siden i søkemotorindeksen i stedet for den gamle siden når de søker, noe som betyr at den gamle siden erstattes med den nye siden, i tillegg alle kvalifiserte, for eksempel siderangering, lenkesaft sendes til den nye siden.

plassering /

skriv om ^ http: // 155.138.XXX.XXX / sti permanent;

Regelmessig uttrykk, mønsterfangst og variabler.

Nginx bruker Regular expression tungt med omskrivningsdirektivet, og det er derfor nyttig å vite om Regular expression i dette segmentet.  Det finnes flere typer regulære uttrykk, men Nginx bruker Perl Compatible Regular Expressions aka PCRE. Å ha et testverktøy for vanlig uttrykk er nyttig for å sikre at det skrevne mønsteret fungerer på forhånd ved å bruke det i Nginx-konfigurasjonsfilen. Denne guiden anbefaler https: // regex101.com / som verktøyet, og alle følgende eksempler blir testet grundig med nevnte verktøy.

Vanlig uttrykk

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

Et typisk mønster for omskrivningsdirektiv går som ovenfor, det inneholder omskrivningsdirektivet i begynnelsen, deretter med et mellomrom "mønsteret" i vanlig uttrykk, deretter med et mellomrom "erstatningen", og til slutt "flagget". Omskrivningsdirektivet kan plasseres hvor som helst innenfor serverparentesene, men anbefales å beholde det etter å ha spesifisert lytte-, servernavn-, rot- og indeksdirektiv. Når en besøkende sender en forespørsel til serveren, sendes en URL sammen med forespørselen, og hvis URL-en blir matchet med det vanlige uttrykksmønsteret som er spesifisert i omskrivningsdirektivet, blir det omskrevet basert på erstatningen, og deretter blir utførelsesflyten manipulert basert på flagget.

Regulært uttrykksmønster bruker parenteser for å indikere gruppen, hvis understreng blir hentet ut av URL-en når den samsvarer med regex-mønsteret med URL-en til forespørselen, og deretter blir den understrengen som tas ut av URL-en tildelt variabelen i “Erstatning” av omskrivningsdirektivet. Hvis det er flere samsvarende grupper, tildeles understrengen til hver matchede gruppe til variablene i "erstatning" i numerisk rekkefølge, noe som betyr at understrengen til den første matchede gruppen tildeles den første variabelen ($ 1), delstrengen til den andre matchede gruppen tildeles den andre variabelen ($ 2), og så videre.

Av fire flagg ble det allerede forklart to flagg i denne guiden, de gjenværende er sist og går i stykker. Før du forstår hvordan de gjenværende flaggene fungerer, er det viktig å forstå hvordan Nginx-motoren oppfører seg med omskrivningsdirektiver. Når en URL sendes sammen med en forespørsel, prøver Nginx-motoren å matche den med en stedsblokk. Enten det samsvarer eller ikke, hvis et direktiv som omskriving, retur snubles over, blir det utført sekvensielt. Hvis den sendte URL-en samsvarer med mønsteret til et omskrivningsdirektiv, kjører Nginx-motoren hele konfigurasjonsfilen, uavhengig av hvor omskrivningsdirektivet er spesifisert som en løkke, til den nylig omskrevne URL-en samsvarer med en av stedsblokkene.

Følgende URL brukes som en demonstrasjon for å forklare hvordan begge flaggene får utførelsesflyten til Nginx-motoren til å oppføre seg med omskrivningsdirektivet. Følgende skjermbilde viser filstrukturen til webserveren.

http: // 155.138.XXX.XXX / nettleser / prøve.txt (URL-en sendt som en forespørsel)

Når ikke noe flagg brukes

Når ikke noe flagg brukes, blir begge omskrivningsdirektivene utført sekvensielt; derfor blir den første URL-en i listen nedenfor til 2nd, deretter 2nd URL blir til den siste URL Så når eksemplet.txt-fil i nettlesermappen blir bedt om, serverer webserveren faktisk prøven.txt-fil i rotmappen. Siden URL-omskriving er fullstendig abstrakt fra nettleseren, ser det ingen forskjell i visning sammenlignet med returdirektivet som angir nettleseren om forespørselen ble omdirigert eller ikke med et HTTP-nummer.

  1. http: // 155.138.XXX.XXX / nettleser / prøve.tekst
  2. http: // 155.138.XXX.XXX / krom / prøve.tekst
  3. http: // 155.138.XXX.XXX / prøve.tekst
plassering /

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

Når enten Break eller Last Flag er spesifisert utenfor lokaliseringsblokken

Når enten pause eller siste flagg er spesifisert utenfor lokaliseringsblokken, blir omskrivningsdirektivene etter det samsvarende omskrivningsdirektivet ikke analysert i det hele tatt, for eksempel i det følgende eksemplet blir forespørselens URL omskrevet til 2nd en i listen nedenfor, uansett hvilket flagg som er brukt, og det er det.

  1. http: // 155.138.XXX.XXX / nettleser / prøve.tekst
  2. http: // 155.138.XXX.XXX / krom / prøve.tekst
plassering /

skriv om ^ / nettleser / (.*) $ / chrome / $ 1 last; #break
skriv om ^ / krom / (.*) $ / $ 1 sist; #break
plassering / krom
try_files $ uri $ uri / = 404;

Når sist flagg brukes inne i en stedsblokk

Når det siste flagget brukes inne i en stedsblokk, slutter det å analysere omskrivingsdirektiver lenger i den aktuelle stedsblokken, og stuper inn i neste omskrivingsblokk hvis den omskrevne URL-en blir matchet med banen til den stedsblokken, og deretter utfører den påfølgende omskrivningsdirektiv inne i det.

  1. http: // 155.138.XXX.XXX / nettleser / prøve.tekst
  2. http: // 155.138.XXX.XXX / krom / prøve.tekst
  3. http: // 155.138.XXX.XXX / prøve.tekst
plassering /
skriv om ^ / nettleser / (.*) $ / krom / $ 1 sist;

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

Når pauseflagg brukes inne i en lokasjonsblokk

Bryt flagg, derimot, når det er inne i en stedsblokk, må du slutte å analysere omskrive direktiver, uavhengig av hvor de ligger, når et omskrivningsdirektiv samsvares med forespørselens URL, og serverer innholdet til brukeren.

plassering /
skriv om ^ / nettleser / (.*) $ / krom / $ 1 pause;

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

Konklusjon

URL-omskriving er en prosess med omskriving av URL-er i en webserver. Nginx tilbyr flere direktiver som retur, omskriving, kartdirektiv for å gjøre det mulig. Denne guiden viser hva som er retur- og omskrivningsdirektiver, og hvordan de brukes til å omskrive nettadresser uten problemer. Som vist i eksemplene, er returdirektiv egnet for å signalisere nettleseren, og søkemotoren søker gjennom hvor siden er, mens omskrivningsdirektivet er nyttig for å trekke ut URL-omskrivingsprosessen uten å la nettleseren vite hva som skjer bak scenen. Dette er ganske nyttig for å servere innhold via en CDN, hurtigbufret server eller fra et annet sted i nettverket. Brukerne vet aldri hvor ressursen kommer fra, da nettleseren bare viser URL-en som er gitt til dem.

SuperTuxKart for Linux
SuperTuxKart er en flott tittel designet for å gi deg Mario Kart-opplevelsen gratis på Linux-systemet ditt. Det er ganske utfordrende og morsomt å spi...
Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...