NGINX to wysokowydajny serwer WWW i serwer odwrotnego proxy znany ze swojej zdolności do obsługi dużego obciążenia ruchem i wydajnego udostępniania treści statycznych. Jedną z jego potężnych funkcji jest możliwość przekierowywania adresów URL, kluczowa funkcja zarządzania ruchem internetowym, ulepszania SEO i zapewniania płynnej obsługi użytkownika. Przekierowanie adresów URL w NGINX może być wykorzystywane do różnych celów, takich jak przekierowywanie protokołu HTTP na HTTPS, tworzenie aliasów adresów URL lub zarządzanie migracjami witryn.
Poniższy przewodnik zademonstruje, jak przekierowywać adresy URL w NGINX przy użyciu terminala wiersza poleceń w systemach Linux lub Unix. Konfigurując solidne i elastyczne możliwości przekierowywania NGINX, możesz efektywnie zarządzać i kontrolować ruch sieciowy, aby spełnić Twoje specyficzne wymagania.
Zwróć adresy URL przekierowań w NGINX
NGINX udostępnia dwie kluczowe dyrektywy dotyczące konfigurowania przekierowania adresu URL: return
I rewrite
. Dyrektywy te mają kluczowe znaczenie dla kierowania ruchu internetowego z jednego adresu URL na inny.
Przekierowania 301 w NGINX
Przekierowanie 301 jest niezbędne do trwałego przekierowania. Jest powszechnie używany, gdy witryna internetowa lub strona internetowa została trwale przeniesiona pod nowy adres URL. Aby skonfigurować przekierowanie 301 w NGINX, użyj metody return
dyrektywę w bloku serwera, określającą kod stanu 301. Dzięki temu zarówno użytkownicy, jak i wyszukiwarki zostaną przekierowani pod nowy adres URL.
Przykład przekierowania 301
Zastanów się, czy musisz przekierować ruch z oldsite.com
Do newsite.com
. Konfiguracja NGINX wyglądałaby następująco:
server {
listen 80;
server_name oldsite.com;
location / {
return 301 $scheme://www.newsite.com$request_uri;
}
}
Ta konfiguracja skutecznie przekierowuje wszystkie przychodzące żądania z oldsite.com
Do www.newsite.com
, zachowując oryginalny identyfikator URI żądania. Ta prosta, ale skuteczna metoda zapewnia użytkownikom i wyszukiwarkom znalezienie nowej lokalizacji Twojej witryny.
Przekierowania 302 w NGINX
W przeciwieństwie do stałego przekierowania, w scenariuszach tymczasowego przekierowania używane jest przekierowanie 302. Na przykład możesz tymczasowo przekierować użytkowników podczas konserwacji witryny lub gdy strona zostanie tymczasowo przeniesiona.
Przykład przekierowania 302
Aby to zilustrować, załóżmy, że chcesz przekierować ruch z temp.com
Do another-site.com
tymczasowo. Konfiguracja NGINX wyglądałaby następująco:
server {
listen 80;
server_name temp.com;
location / {
return 302 $scheme://www.another-site.com$request_uri;
}
}
W tej konfiguracji cały ruch do temp.com
jest tymczasowo przekierowany do www.another-site.com
. Użycie kodu statusu 302 wskazuje, że to przekierowanie ma charakter tymczasowy, co jest ważne dla utrzymania integralności SEO podczas krótkotrwałych zmian.
Przepisz adresy URL przekierowań dyrektywy w NGINX
The rewrite
dyrektywa w NGINX to potężne narzędzie do obsługi złożonych scenariuszy przekierowań adresów URL. W przeciwieństwie do prostych return
dyrektywa, rewrite
wykorzystuje wyrażenia regularne i szerszy zakres zmiennych. Ta elastyczność pozwala na precyzyjną kontrolę nad sposobem przekierowywania adresów URL, szczególnie w scenariuszach, w których proste przekierowanie jest niewystarczające.
Przekierowanie na podstawie rozszerzenia pliku
Przekierowywanie określonych typów plików
Typowym wymaganiem jest przekierowanie określonych typów plików. Na przykład przekierowanie all .jpg
żądania obrazu do nowego katalogu:
server {
listen 80;
server_name www.example.com;
location ~* \.jpg$ {
rewrite ^/images/(.*)\.jpg$ /new-images/$1.jpg permanent;
}
}
W tej konfiguracji każde żądanie do a .jpg
plik w /images/
katalog zostanie przekierowany do /new-images/
. Wyrażenie regularne \.(jpg)$
gwarantuje, że tylko adresy URL kończące się na .jpg
są dotknięte.
Dynamiczne przekierowanie na podstawie URI
Przekierowanie z manipulacją URI
Inny typowy scenariusz obejmuje dynamiczne przekierowywanie adresów URL na podstawie ich składników URI. Rozważ przekierowanie użytkowników na podstawie kategorii produktów:
server {
listen 80;
server_name www.example.com;
location ~* ^/category/(.*)$ {
rewrite ^/category/(.*)$ /new-category/$1 permanent;
}
}
Ta konfiguracja przechwytuje dowolny adres URL poniżej /category/
i przekierowuje go do odpowiedniego adresu URL pod /new-category/
, zachowując drugą część identyfikatora URI.
Obsługa starszych struktur adresów URL
Przekierowanie starych adresów URL do nowego wzorca
Strony internetowe często zmieniają z biegiem czasu strukturę adresów URL. The rewrite
dyrektywa może sprawnie obsłużyć takie przejścia:
server {
listen 80;
server_name www.example.com;
location ~* ^/old-structure/(.*)$ {
rewrite ^/old-structure/(.*)/info$ /new-structure/$1/details permanent;
}
}
Ten przykład pokazuje, jak przekierować adresy URL ze starego wzorca (/old-structure/[identifier]/info
) do nowego wzoru (/new-structure/[identifier]/details
).
Przekierowanie geograficzne
Przekierowywanie użytkowników według lokalizacji geograficznej
NGINX może również obsługiwać przekierowania na podstawie lokalizacji geograficznej, wykorzystując $geoip_country_code
zmienny:
server {
listen 80;
server_name www.example.com;
if ($geoip_country_code = "US") {
rewrite ^/(.*)$ /us/$1 permanent;
}
}
W tej konfiguracji odwiedzający ze Stanów Zjednoczonych są przekierowywani do sekcji witryny internetowej przeznaczonej wyłącznie dla Stanów Zjednoczonych. To podejście wymaga włączenia modułu GeoIP w NGINX.
Równoważenie obciążenia przekierowań w NGINX
NGINX przoduje w efektywnym zarządzaniu ruchem sieciowym poprzez możliwości równoważenia obciążenia i przekierowywania. Równoważenie obciążenia w NGINX polega na dystrybucji ruchu przychodzącego na wiele serwerów. Strategia ta zapobiega przeciążeniu pojedynczego serwera, zwiększając w ten sposób ogólną wydajność i niezawodność systemu.
Konfigurowanie NGINX do równoważenia obciążenia
Konfiguracja równoważenia obciążenia
Podstawowe równoważenie obciążenia
Oto przykład konfiguracji NGINX do równoważenia obciążenia:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
W tej konfiguracji NGINX działa jako odwrotny serwer proxy i równomiernie dystrybuuje przychodzące żądania do jednego z trzech określonych serwerów zaplecza: backend1.example.com, backend2.example.com i backend3.example.com. Ta konfiguracja ma kluczowe znaczenie w przypadku witryn internetowych o dużym natężeniu ruchu, ponieważ zapewnia wydajną obsługę żądań, utrzymując w ten sposób szybki czas reakcji i minimalizując przestoje serwera.
Zaawansowane równoważenie obciążenia z kontrolą stanu
Aby zwiększyć niezawodność, możesz skonfigurować NGINX tak, aby sprawdzał stan serwerów zaplecza i wysyłał ruch tylko do tych, które są w dobrym stanie:
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;
}
}
}
Przy tej konfiguracji NGINX okresowo sprawdza kondycję serwerów zaplecza i wyklucza wszystkie serwery, które nie działają z puli równoważenia obciążenia. Dzięki temu ruch jest kierowany wyłącznie do serwerów, które są w stanie obsłużyć żądania, co poprawia ogólną niezawodność.
Najlepsze praktyki dotyczące równoważenia obciążenia
Implementowanie trwałości sesji (sesje trwałe)
W przypadku aplikacji wymagających trwałości sesji można użyć sesji trwałych, aby mieć pewność, że użytkownik będzie konsekwentnie kierowany do tego samego serwera zaplecza:
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;
}
}
}
W tej konfiguracji ip_hash
Dyrektywa zapewnia, że żądania z tego samego adresu IP klienta są zawsze kierowane do tego samego serwera zaplecza, zachowując spójność sesji.
Konfiguracja zakończenia protokołu SSL
Aby zapewnić bezpieczną komunikację, najlepszą praktyką jest zakończenie protokołu SSL w module równoważenia obciążenia:
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;
}
}
}
W tej konfiguracji NGINX obsługuje terminację SSL, odszyfrowując przychodzące żądania SSL i przesyłając je do serwerów zaplecza jako zwykłe żądania HTTP. Odciąża to przetwarzanie SSL z serwerów zaplecza, poprawiając ich wydajność.
Wniosek
W tym przewodniku omówiliśmy praktyczne aspekty używania NGINX do przekierowywania adresów URL, równoważenia obciążenia i nie tylko. Omówiliśmy szereg technik, od konfiguracji podstawowych przekierowań 301 i 302 po wdrożenie złożonych reguł przepisywania i wydajne konfiguracje równoważenia obciążenia. Siła NGINX leży w jego elastyczności i wydajności, co czyni go nieocenionym narzędziem do zarządzania dowolną witryną internetową, zarówno małą, jak i dużą. Stosując te koncepcje, kontynuuj eksperymentowanie i optymalizację. NGINX to solidne narzędzie w arsenale administracji internetowej, więc używaj go, aby zapewnić płynne i wydajne działanie witryny.