Jak přesměrovat adresy URL v Nginx

NGINX je vysoce výkonný webový server a reverzní proxy server známý svou schopností zvládat vysoké provozní zatížení a efektivně obsluhovat statický obsah. Jednou z jeho výkonných funkcí je schopnost přesměrovat adresy URL, což je zásadní schopnost pro správu webového provozu, zlepšení SEO a zajištění hladkého uživatelského zážitku. Přesměrování URL v NGINX lze použít k různým účelům, jako je přesměrování HTTP na HTTPS, vytváření aliasů URL nebo správa migrací stránek.

Následující průvodce ukáže, jak přesměrovat adresy URL v NGINX pomocí terminálu příkazového řádku v systémech Linux nebo Unix. Nakonfigurováním robustních a flexibilních možností přesměrování NGINX můžete efektivně spravovat a řídit webový provoz tak, aby vyhovoval vašim specifickým požadavkům.

Vrácené adresy URL přesměrování v NGINX

NGINX poskytuje dvě klíčové směrnice pro nastavení přesměrování URL: return a rewrite. Tyto direktivy jsou klíčové pro směrování webového provozu z jedné adresy URL na druhou.

301 přesměrování v NGINX

Přesměrování 301 je nezbytné pro trvalé přesměrování. Běžně se používá, když byla webová stránka nebo webová stránka trvale přesunuta na novou adresu URL. Chcete-li nastavit přesměrování 301 v NGINX, použijte return direktiva ve vašem bloku serveru, která určuje stavový kód 301. To zajišťuje, že uživatelé i vyhledávače budou přesměrováni na novou adresu URL.

Příklad přesměrování 301

Zvažte, že potřebujete přesměrovat provoz z oldsite.com na newsite.com. Konfigurace NGINX by vypadala takto:

server {
    listen 80;
    server_name oldsite.com;
    location / {
        return 301 $scheme://www.newsite.com$request_uri;
    }
}

Tato konfigurace efektivně přesměruje všechny příchozí požadavky z oldsite.com na www.newsite.com, zachování původního URI požadavku. Tato přímočará, ale účinná metoda zajišťuje, že uživatelé a vyhledávače najdou vaše nové umístění na webu.

302 přesměrování v NGINX

Na rozdíl od trvalého přesměrování se přesměrování 302 používá pro scénáře dočasného přesměrování. Můžete například dočasně přesměrovat uživatele během údržby webu nebo při dočasném přesunutí stránky.

Příklad přesměrování 302

Pro ilustraci řekněme, že chcete přesměrovat provoz z temp.com na another-site.com dočasně. Nastavení NGINX by bylo:

server {
    listen 80;
    server_name temp.com;
    location / {
        return 302 $scheme://www.another-site.com$request_uri;
    }
}

V této konfiguraci je veškerý provoz na temp.com je dočasně přesměrováno na www.another-site.com. Použití stavového kódu 302 naznačuje, že toto přesměrování je dočasné, což je důležité pro zachování integrity SEO během krátkodobých změn.

Adresy URL přesměrování direktivy přepsat v NGINX

The rewrite Direktiva v NGINX je výkonný nástroj pro zpracování složitých scénářů přesměrování URL. Na rozdíl od přímého return směrnice, rewrite využívá regulární výrazy a širší škálu proměnných. Tato flexibilita umožňuje přesnou kontrolu nad tím, jak jsou adresy URL přesměrovány, zejména ve scénářích, kdy jednoduché přesměrování nestačí.

Přesměrování na základě přípony souboru

Přesměrování konkrétních typů souborů

Běžným požadavkem je přesměrování konkrétních typů souborů. Například přesměrování všech .jpg požadavky na obrázky do nového adresáře:

server {
    listen 80;
    server_name www.example.com;
    location ~* \.jpg$ {
        rewrite ^/images/(.*)\.jpg$ /new-images/$1.jpg permanent;
    }
}

V této konfiguraci bude jakýkoli požadavek na a .jpg soubor v /images/ adresář bude přesměrován na /new-images/. Regulární výraz \.(jpg)$ zajišťuje, že pouze adresy URL končící na .jpg jsou ovlivněny.

Dynamické přesměrování založené na URI

Přesměrování s manipulací URI

Další běžný scénář zahrnuje dynamické přesměrování URL na základě jejich komponent URI. Zvažte přesměrování uživatelů na základě kategorií produktů:

server {
    listen 80;
    server_name www.example.com;
    location ~* ^/category/(.*)$ {
        rewrite ^/category/(.*)$ /new-category/$1 permanent;
    }
}

Toto nastavení zachytí všechny adresy URL pod /category/ a přesměruje jej na odpovídající URL pod /new-category/, zachování druhé části URI.

Práce se staršími strukturami URL

Přesměrování starých URL na nový vzor

Webové stránky často mění svou strukturu URL v průběhu času. The rewrite direktiva může hladce zvládnout tyto přechody:

server {
    listen 80;
    server_name www.example.com;
    location ~* ^/old-structure/(.*)$ {
        rewrite ^/old-structure/(.*)/info$ /new-structure/$1/details permanent;
    }
}

Tento příklad ukazuje, jak přesměrovat adresy URL ze starého vzoru (/old-structure/[identifier]/info) na nový vzor (/new-structure/[identifier]/details).

Geografické přesměrování

Přesměrování uživatelů podle geografické polohy

NGINX také zvládne přesměrování na základě geografické polohy s využitím $geoip_country_code variable:

server {
    listen 80;
    server_name www.example.com;
    if ($geoip_country_code = "US") {
        rewrite ^/(.*)$ /us/$1 permanent;
    }
}

V této konfiguraci jsou návštěvníci ze Spojených států přesměrováni na sekci webu specifickou pro USA. Tento přístup vyžaduje, aby byl v NGINX povolen modul GeoIP.

Adresy URL přesměrování pro vyrovnávání zatížení v NGINX

NGINX vyniká v efektivní správě síťového provozu díky svým schopnostem vyvažování zátěže a přesměrování. Vyvažování zátěže v NGINX zahrnuje distribuci příchozího provozu na více serverů. Tato strategie zabraňuje přetížení jakéhokoli jednotlivého serveru, čímž zvyšuje celkový výkon a spolehlivost systému.

Konfigurace NGINX pro vyrovnávání zátěže

Nastavení vyvažování zátěže

Základní vyvažování zátěže

Zde je příklad, jak nakonfigurovat NGINX pro vyrovnávání zátěže:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

V této konfiguraci funguje NGINX jako reverzní proxy a rovnoměrně distribuuje příchozí požadavky na jeden ze tří specifikovaných backendových serverů: backend1.example.com, backend2.example.com a backend3.example.com. Toto nastavení je klíčové pro weby s vysokou návštěvností, protože zajišťuje efektivní zpracování požadavků, čímž udržuje rychlou odezvu a minimalizuje prostoje serveru.

Pokročilé vyrovnávání zátěže s kontrolami stavu

Pro zvýšení spolehlivosti můžete nakonfigurovat NGINX tak, aby prováděl kontroly stavu na backendových serverech a posílal provoz pouze na zdravé servery:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
        
        # Enable health checks
        health_check;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

S tímto nastavením NGINX pravidelně kontroluje stav backendových serverů a vylučuje všechny servery, které jsou mimo provoz z fondu pro vyrovnávání zátěže. To zajišťuje, že provoz je směrován pouze na servery, které jsou schopny zpracovávat požadavky, což zvyšuje celkovou spolehlivost.

Nejlepší postupy pro vyvažování zátěže

Implementace trvání relace (pevné relace)

U aplikací, které vyžadují stálost relace, můžete použít pevné relace, abyste zajistili, že uživatel bude konzistentně směrován na stejný backend server:

http {
    upstream backend {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

V této konfiguraci je ip_hash Direktiva zajišťuje, že požadavky ze stejné klientské IP adresy jsou vždy směrovány na stejný backend server, čímž je zachována konzistence relace.

Konfigurace ukončení SSL

Pro zabezpečenou komunikaci je osvědčeným postupem ukončit SSL na nástroji pro vyrovnávání zatížení:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        listen 443 ssl;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

V tomto nastavení NGINX zpracovává ukončení SSL, dešifruje příchozí požadavky SSL a předává je backendovým serverům jako běžné požadavky HTTP. To odlehčí zpracování SSL od backendových serverů a zlepší jejich výkon.

Závěr

V této příručce jsme prozkoumali praktičnost používání NGINX pro přesměrování URL, vyrovnávání zatížení a další. Pokryli jsme řadu technik, od nastavení základních přesměrování 301 a 302 až po implementaci složitých pravidel pro přepis a efektivní konfigurace vyvažování zátěže. Síla NGINX spočívá v jeho flexibilitě a výkonu, díky čemuž je neocenitelným nástrojem pro správu jakéhokoli webu, ať už malého nebo velkého. Při používání těchto konceptů pokračujte v experimentování a optimalizaci. NGINX je robustní nástroj ve vašem arzenálu webové administrace, takže jej použijte, aby vaše stránky fungovaly hladce a efektivně.

Joshua James
Následuj mě
Nejnovější příspěvky uživatele Joshua James (vidět vše)

Napsat komentář