Nginx

URL-herschrijving gebruiken

URL-herschrijving gebruiken
URL-herschrijving is een proces waarbij de verzoek-URL wordt gewijzigd in iets anders zoals gedefinieerd in de webserver. Nginx gebruikt de module ngx_http_rewrite_module, die voornamelijk gebruikmaakt van return, rewrite-richtlijnen voor herschrijfdoeleinden. Behalve deze richtlijnen die in deze module zijn gedefinieerd, kan de kaartrichtlijn, gedefinieerd in ngx_http_map_module, ook worden gebruikt om gemakkelijk URL's te herschrijven. Deze gids is bedoeld om uitleg te geven over 2 hoofdrichtlijnen - retourneren, herschrijven en hun vlaggen, hoe ze werken en hun toepassingen.

Vereisten

Deze gids is geoptimaliseerd voor Nginx 1.0.1 en hoger, en daarom wordt het ten zeerste aanbevolen om de bestaande Nginx-instantie bij te werken naar de bovengenoemde of hogere versie. Sommige van de commando's, syntaxis kunnen echter nog steeds werken voor elke versie vóór de bovengenoemde versie. Aangezien deze handleiding gaat over het herschrijven van URL's, wat een beetje geavanceerd onderwerp is, wordt ervan uitgegaan dat het publiek op de hoogte is van de installatieprocedure van Nginx, en daarom wordt het hier niet uitgelegd.

Terugkeer

Return is de basisrichtlijn die het herschrijven van URL's uitvoert en is eenvoudig te begrijpen. Het gebruikt geen reguliere expressies, maar het kan variabelen bevatten om te ontleden, vastgelegd uit het pad van het locatieblok. Gewoonlijk wordt de retourrichtlijn gebruikt om de verzoek-URL om te leiden naar een andere locatie, en daarom gebruikt het vaak HTTP-codes zoals 301 voor permanente omleiding en 302 voor tijdelijke omleiding. De volgende codefragmenten demonstreren enkele van de gebruiksscenario's van de retourrichtlijn:.

Het volgende codefragment leidt de verzoek-URL om naar Google.com. Het kan direct onder het servercodeblok of onder een locatiecodeblok worden gebruikt, maar zorg ervoor dat u niet naar hetzelfde domein doorverwijst om een ​​omleidingslus te voorkomen

retour 301 https://google.com;

Het volgende codefragment leidt de verzoek-URL om naar Nucuta.com samen met het pad, bijvoorbeeld het bovengenoemde voorbeeld bevat geen pad, parameters, en dus ongeacht welke URL in de adresbalk wordt getypt, wordt het verzoek omgeleid naar het hoofddomein van Google, terwijl in het volgende voorbeeld, het pad, samen met de parameters worden overgedragen zonder de domeinnaam. Als alternatief kan $is_args$args worden gebruikt, maar dan moet in plaats van $request_uri de variabele $uri worden gebruikt, aangezien $request_uri ook parameters van de URL bevat. Als de vereiste is om om te leiden naar een andere directory van hetzelfde domein, gebruik dan de $host-variabele in plaats van de domeinnaam in de return-instructie, bijvoorbeeld in het volgende voorbeeld in plaats van nucuta.com, gebruik $host.

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

Het volgende codefragment leidt het binnenkomende verzoek om naar de paddirectory van hetzelfde domein en het schema, wat betekent dat als het volgende codefragment wordt gebruikt in http://Linux.com, en als een bezoeker er een verzoek aan doet, wordt het omgeleid naar de paddirectory, en daarom is het volgende codefragment handig bij het beheren van een groot aantal websites. Hier definieert $schema het protocol van de URL, zoals FTP, HTTP, HTTPS, en de $host definieert het domein van de huidige server met zijn domeinextensie, zoals Google.com, Linux.netto enz. Aangezien dit geen protocolomleiding uitvoert, zoals van HTTP naar HTTPs, moet het handmatig worden gedaan zoals in het tweede voorbeeld.

retourneer 301 $schema://$host/pad;
als ($schema != "https")
retourneer 301 https://$host$request_uri;

Een ander nuttig gebruiksvoorbeeld van de retourrichtlijn is de mogelijkheid om regex-variabelen op te nemen, maar daarvoor moet de reguliere expressie worden opgegeven in het locatieblok en moet een patroon worden vastgelegd, waarna het vastgelegde patroon kan worden gecombineerd met de bestaande URL in de retourrichtlijn voor omleidingsdoeleinden, bijvoorbeeld in het volgende voorbeeld, wanneer een verzoek wordt gedaan om toegang te krijgen tot een tekstbestand, legt het de naam van het tekstbestand vast in het locatieblok, geeft het die naam door aan de retourinstructie en combineert de retourinstructie deze met de bestaande URL om het verzoek om te leiden naar een andere map.

locatie ~* ^/([^/]+.txt)$
retour 301 /chroom/$1;

Herschrijven

Herschrijven is een richtlijn die wordt gebruikt om URL's intern in de webserver te herschrijven zonder het onderliggende mechanisme aan de clientzijde bloot te stellen. Volgens de syntaxis wordt het gebruikt met reguliere expressies. De basissyntaxis gaat als volgt:. De regex placeholder is voor het gebruik van reguliere expressies, vervangende placeholder is voor het vervangen van de overeenkomende URL, terwijl de vlag is voor het manipuleren van de stroom van de uitvoering. Op dit moment zijn de vlaggen die worden gebruikt in de herschrijfrichtlijn break, permanent, redirect en last.

herschrijf regex-vervanging [vlag];

Voordat we verder gaan met de reguliere expressies, vervangingen, het vastleggen van patronen en variabelen, is het belangrijk om te weten hoe vlaggen ervoor zorgen dat de interne engine van Nginx zich gedraagt. Er zijn vier belangrijke vlaggen die worden gebruikt met de herschrijfrichtlijn, zoals eerder uitgelegd, waaronder permanente, omleidingsvlaggen kunnen aan elkaar worden gekoppeld omdat beide dezelfde functionaliteit uitvoeren, wat betekent dat omleiding.

Omleiden

Omleidingsvlag wordt gebruikt om de browser aan te geven dat de omleiding tijdelijk is, wat ook handig is voor crawlers van zoekmachines om te herkennen dat de pagina tijdelijk is verplaatst en enige tijd later op de oorspronkelijke locatie zal worden hersteld. Wanneer de pagina aangeeft dat het 302 is, brengen zoekmachines geen wijzigingen aan in de indexering, en daarom zien bezoekers tijdens het zoeken nog steeds de originele pagina in de index van de zoekmachine, wat betekent dat de oude pagina niet wordt verwijderd en bovendien alle kwaliteit , zoals paginarangschikking, link juice worden niet doorgegeven aan de nieuwe pagina.

plaats /

herschrijven ^ http://155.138.XXX.XXX/pad-omleiding;

permanent

Permanente vlag wordt gebruikt om de browser aan te geven dat de omleiding permanent is, wat ook handig is voor crawlers van zoekmachines om te herkennen dat de pagina permanent is verwijderd en NIET zal worden hersteld op de oorspronkelijke locatie enige tijd later, zoals bij tijdelijke verplaatsing. Wanneer de pagina aangeeft dat het 301 is, brengen zoekmachines enkele wijzigingen aan in de indexering, en daarom zien bezoekers de nieuwe pagina in de zoekmachine-index in plaats van de oude pagina bij het zoeken, wat betekent dat de oude pagina wordt vervangen door de nieuwe pagina. de kwaliteit, zoals page rank, link juice worden doorgegeven aan de nieuwe pagina.

plaats /

herschrijven ^ http://155.138.XXX.XXX/pad permanent;

Reguliere expressie, patroonvastlegging en variabelen.

Nginx gebruikt veel reguliere expressies met herschrijfrichtlijnen, en dus is kennis over reguliere expressies handig in dit segment.  Er zijn meerdere soorten reguliere expressies, maar Nginx gebruikt Perl-compatibele reguliere expressies, ook bekend als PCRE. Het hebben van een tool voor het testen van reguliere expressies is handig om ervoor te zorgen dat het geschreven patroon inderdaad werkt, vooraf door het in het Nginx-configuratiebestand te gebruiken. Deze gids beveelt https://regex101 aan.com/ als de tool, en alle volgende voorbeelden worden grondig getest met de bovengenoemde tool.

Normale uitdrukkingen

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

Een typisch patroon van herschrijfrichtlijnen gaat als hierboven, het bevat de herschrijfrichtlijn aan het begin, dan met een spatie het "patroon" in reguliere expressie, dan met een spatie de "vervanging", dan tenslotte de "vlag". De herschrijfrichtlijn kan overal binnen de serverhaakjes worden geplaatst, maar het wordt aanbevolen om deze te behouden na het specificeren van listen, servernaam, root en indexrichtlijnen. Wanneer een bezoeker een verzoek doet aan de server, wordt een URL met het verzoek verzonden, en als de URL overeenkomt met het reguliere expressiepatroon dat is gespecificeerd in de herschrijfrichtlijn, wordt deze herschreven op basis van de vervanging, waarna de uitvoeringsstroom wordt gemanipuleerd op basis op de vlag.

Het patroon voor reguliere expressies gebruikt haakjes om de groep aan te geven waarvan de subtekenreeks uit de URL wordt geëxtraheerd bij het matchen van het regex-patroon met de URL van het verzoek, waarna die subtekenreeks die uit de URL wordt gehaald, wordt toegewezen aan de variabele in de "vervanging" van herschrijfrichtlijn. Als er meerdere overeenkomende groepen zijn, wordt de subtekenreeks van elke overeenkomende groep toegewezen aan de variabelen in "vervanging" in numerieke volgorde, wat betekent dat de subtekenreeks van de eerste overeenkomende groep wordt toegewezen aan de eerste variabele ($1), de subtekenreeks van de tweede overeenkomende groep wordt toegewezen aan tweede variabele ($ 2), enzovoort.

Van de 4 vlaggen werden 2 vlaggen al uitgelegd in deze gids, de overige zijn de laatste en breken. Voordat u begrijpt hoe de resterende vlaggen werken, is het belangrijk om te begrijpen hoe de Nginx-engine zich gedraagt ​​met herschrijfrichtlijnen. Wanneer een URL samen met een verzoek wordt verzonden, probeert de Nginx-engine deze te matchen met een locatieblok. Of het nu overeenkomt of niet, als een richtlijn zoals herschrijven, return wordt gevonden, wordt deze sequentieel uitgevoerd. Als de verzonden URL overeenkomt met het patroon van een herschrijfinstructie, voert de Nginx-engine het hele configuratiebestand uit, ongeacht waar de herschrijfinstructie is opgegeven als een lus, totdat de nieuw herschreven URL overeenkomt met een van de locatieblokken.

De volgende URL wordt gebruikt als demonstratie om uit te leggen hoe beide vlaggen ervoor zorgen dat de uitvoeringsstroom van de Nginx-engine zich gedraagt ​​​​met de herschrijfrichtlijn. De volgende schermafbeelding geeft de bestandsstructuur van de webserver weer:.

http://155.138.XXX.XXX/browser/voorbeeld.txt (de URL verzonden als een verzoek)

Wanneer er geen vlag wordt gebruikt

Als er geen vlag wordt gebruikt, worden beide herschrijfrichtlijnen opeenvolgend uitgevoerd; vandaar dat de eerste URL in de volgende lijst verandert in 2nd, dan 2nd URL verandert in de laatste URL Dus wanneer het voorbeeld.txt-bestand in de browsermap wordt opgevraagd, de webserver dient het voorbeeld daadwerkelijk.txt-bestand in de hoofdmap. Omdat het herschrijven van de URL volledig is geabstraheerd van de browser, ziet het geen verschil in het serveren in vergelijking met de retourrichtlijn die de browser aangeeft of het verzoek is omgeleid of niet met een HTTP-nummer.

  1. http://155.138.XXX.XXX/browser/voorbeeld.tekst
  2. http://155.138.XXX.XXX/chroom/monster.tekst
  3. http://155.138.XXX.XXX/voorbeeld.tekst
plaats /

herschrijf ^/browser/(.*)$ /chroom/$1;
herschrijven ^/chrome/(.*)$ /$1;
locatie /chroom
try_files $uri $uri/ =404;

Wanneer Break, of Last Flag is opgegeven buiten het locatieblok

Wanneer break of last flag is opgegeven buiten het locatieblok, worden de herschrijfrichtlijnen na de overeenkomende herschrijfrichtlijn helemaal niet geparseerd, bijvoorbeeld in het volgende voorbeeld wordt de verzoek-URL herschreven naar de 2nd één in de volgende lijst, ongeacht de gebruikte vlag, en dat is alles.

  1. http://155.138.XXX.XXX/browser/voorbeeld.tekst
  2. http://155.138.XXX.XXX/chroom/monster.tekst
plaats /

herschrijf ^/browser/(.*)$ /chrome/$1 laatste;#break
herschrijven ^/chrome/(.*)$ /$1 laatste;#pauze
locatie /chroom
try_files $uri $uri/ =404;

Wanneer de laatste vlag wordt gebruikt in een locatieblok

Wanneer de laatste vlag binnen een locatieblok wordt gebruikt, stopt het met het ontleden van meer herschrijfrichtlijnen binnen dat specifieke locatieblok en duikt het in het volgende herschrijflocatieblok als de herschreven URL overeenkomt met het pad van dat locatieblok, dan voert het de daaropvolgende herschrijfrichtlijn erin.

  1. http://155.138.XXX.XXX/browser/voorbeeld.tekst
  2. http://155.138.XXX.XXX/chroom/monster.tekst
  3. http://155.138.XXX.XXX/voorbeeld.tekst
plaats /
herschrijf ^/browser/(.*)$ /chroom/$1 laatste;

locatie /chroom
herschrijven ^/chrome/(.*)$ /$1 laatste;
try_files $uri $uri/ =404;

Wanneer de breekvlag wordt gebruikt in een locatieblok

Break-vlag, aan de andere kant, wanneer het zich in een locatieblok bevindt, stop met het ontleden van meer herschrijfrichtlijnen, ongeacht waar ze zich bevinden, wanneer één herschrijfrichtlijn overeenkomt met de verzoek-URL en de inhoud aan de gebruiker levert.

plaats /
herschrijf ^/browser/(.*)$ /chroom/$1 pauze;

locatie /chroom
herschrijven ^/chrome/(.*)$ /$1 pauze;
try_files $uri $uri/ =404;

Conclusie

URL herschrijven is een proces van het herschrijven van URL's binnen een webserver. Nginx biedt meerdere richtlijnen zoals return, herschrijven, maprichtlijnen om het mogelijk te maken. Deze handleiding laat zien wat retour- en herschrijfrichtlijnen zijn en hoe ze worden gebruikt om URL's gemakkelijk te herschrijven. Zoals aangetoond in de voorbeelden, is de retourrichtlijn geschikt om de browser te signaleren, en de zoekmachine crawlt de locatie van de pagina, terwijl de herschrijfrichtlijn nuttig is om het URL-herschrijfproces te abstraheren zonder de browser te laten weten wat er achter de schermen gebeurt. Dit is erg handig bij het aanbieden van inhoud via een CDN, een server in de cache of vanaf een andere locatie binnen het netwerk. De gebruikers weten nooit waar de bron vandaan komt, omdat de browser alleen de URL toont die aan hen is gegeven.

Middelste muisknop werkt niet in Windows 10
De middelste muis knop helpt u door lange webpagina's en schermen met veel gegevens te bladeren. Als dat stopt, zul je uiteindelijk het toetsenbord ge...
Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...
Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...