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ě.