Jak przekierować adresy URL w Nginx

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.

Joshua James
Chodź za mną
Najnowsze posty autorstwa Joshua James (widzieć wszystko)

Dodaj komentarz