Jak używać Nginx do przekierowania całego ruchu z HTTP do HTTPS

Jak używać Nginx do przekierowania całego ruchu z HTTP do HTTPS

Jeśli Twoja witryna jest hostowana z Nginx i ma włączoną SSL, najlepszą praktyką jest całkowicie wyłączenie HTTP i wymuszać cały przychodzący ruch do wersji HTTPS witryny. Unika to zduplikowania treści i zapewnia, że ​​wszyscy użytkownicy witryny przeglądają bezpieczną wersję Twojej witryny. Powinieneś także zobaczyć wzmocnienie SEO, ponieważ wyszukiwarki wolą nie ograniczone i zabezpieczone strony internetowe.

W tym przewodniku założymy, że już używasz Nginx w systemie Linux i chcesz przekierować cały ruch HTTP do HTTPS. Nawet jeśli użytkownik zdarzy się śledzić http: // link, strona powinna wysłać je na poprawną i zabezpieczoną stronę, która dzieje się natychmiast i bez interwencji użytkownika.

Istnieją dwa sposoby skonfigurowania tego przekierowania w Nginx. Jedna metoda pozwala skonfigurować przekierowanie dla poszczególnych stron. Druga metoda może przekierować HTTP do HTTPS dla wszystkich witryn Nginx na twoim serwerze, co jest przydatne, jeśli masz wiele konfiguracji witryn i chcesz uniknąć konieczności stosowania dokładnie tego samego przekierowania do każdego. Poniżej omówimy instrukcje krok po kroku dla obu metod. Zacznijmy.

NOTATKA
Używanie Apache zamiast Nginx? Napisaliśmy osobny przewodnik, jak używać Apache, aby przekierować cały ruch HTTP do HTTPS.

W tym samouczku nauczysz się:

  • Jak przekierować HTTP do HTTPS dla poszczególnych stron internetowych Nginx
  • Jak przekierować HTTP do HTTPS dla wszystkich stron Nginx
Przekieruj ruch HTTP do HTTPS w Nginx Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Każda dystrybucja Linux
Oprogramowanie Nginx
Inny Uprzywilejowany dostęp do systemu Linux jako root lub za pośrednictwem sudo Komenda.
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Przekieruj HTTP do HTTPS dla poszczególnych stron



Będziemy musieli wprowadzić zmiany w pliku konfiguracyjnym serwera Nginx, aby przekierować ruch. Otwórz go z preferowanym edytorem tekstu.

$ sudo nano/etc/nginx/witryny-dostępna/your_conf_file 

W tym pliku powinny być co najmniej dwa bloki - jeden, który kontroluje konfigurację dla połączeń HTTP (port 80) i jeden, który kontroluje HTTPS (port 443). W części HTTP wstaw następujący kod 301 przekierowania. Oczywiście zastąp przykładową domenę na domenę witryny.

serwer Słuchaj 80; Przykład_nazowy Server_name.com www.przykład.com; zwróć 301 https: // Przykład.com $ request_uri;  

Jak widać, kod słucha w porcie 80 w celu przychodzących połączeń przykład.com I www.przykład.com. Następnie przekierowuje te połączenia z tym samym adresem URL, ale z https: //.

Poniżej bloku HTTP potrzebujesz bloku HTTPS, jeśli jeszcze go nie zrobiłeś.

serwer Słuchaj 80; Przykład_nazowy Server_name.com www.przykład.com; zwróć 301 https: // Przykład.com $ request_uri;  serwer Słuchaj 443 SSL; Przykład_nazowy Server_name.com; przykład ssl_certificate.com.crt; SSL_CERTIFICATE_KEY PRZYKŁAD.com.klucz; # inna konfiguracja 

Ale co z połączeniami z https: // www.przykład.com (Zwróć uwagę na www.)? Aby przekierować te połączenia, potrzebujemy kolejnego bloku z przekierowaniem 301. W całości plik konfiguracyjny wyglądałby tak (chociaż twój może mieć dodatkową konfigurację):

serwer  # przekieruj wszystkie HTTP do HTTPS Słuchaj 80; Przykład_nazowy Server_name.com www.przykład.com; zwróć 301 https: // Przykład.com $ request_uri;  serwer  # przekierowanie https www. Posłuchaj 443 SSL; Server_name www.przykład.com; zwróć 301 https: // Przykład.com $ request_uri;  serwer Słuchaj 443 SSL; Przykład_nazowy Server_name.com; przykład ssl_certificate.com.crt; SSL_CERTIFICATE_KEY PRZYKŁAD.com.klucz; # inna konfiguracja 


Upewnij się, że używasz polecenia SystemCTL do ponownego uruchomienia lub ponownego załadowania Nginx, aby te nowe zmiany w objęciu.

$ sudo systemCtl Reload nginx 

Twoja witryna powinna teraz zawsze przekierowywać do adresu URL z formatem https: // przykład.com, niezależnie od linku poprzedzonego przez http: // i/lub www..

Przekieruj HTTP do HTTPS dla wszystkich stron

Aby przekierować ruch wszystkich witryn hostowanych Nginx, wprowadź następujący kod w pliku konfiguracyjnym:

serwer posłuchaj 80 default_server; Posłuchaj [::]: 80 default_server; Nazwa serwera _; return 301 https: // $ host $ request_URI;  

Jest to prawie tak samo jak powyższy kod, tyle że używa zmiennej $ host więc można go zastosować do dowolnego adresu URL, który hostuje Nginx. Ta metoda może być nieco wygodniejsza, ale stracisz część ziarnistej kontroli, którą masz, gdy każda witryna ma własne bloki serwerowe. Użyj własnego uznania i wybierz dowolną metodę.

Wniosek

W zdecydowanej większości przypadków nie ma powodu, aby kontynuować korzystanie z HTTP, gdy Twoja witryna może zaoferować HTTPS. Jest bezpieczniejszy, daje użytkownikowi spokój ducha, a strona otrzyma odrobinę SEO doładowania. W tym artykule zobaczyliśmy, jak łatwo było przekierować cały ruch do HTTPS i całkowicie pozbyć się HTTP. Każda z tych metod jest opłacalna do wymuszania ruchu HTTP do HTTPS na Twojej stronie internetowej (.

Powiązane samouczki Linux:

  • Ubuntu 20.04: WordPress z instalacją Nginx
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do silników magazynowych MySQL
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Ubuntu 20.04 WordPress z instalacją Apache
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mastering Bash Script Loops
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Ubuntu 20.04 Przewodnik