Nginx przekierowuje HTTP do HTTPS

Nginx Redirect Http Https



Nginx, wymawiany jako Engine x, to bezpłatna, wysokowydajna sieć oparta na systemie Linux o otwartym kodzie źródłowym i odwrotny serwer proxy, który jest odpowiedzialny za zarządzanie i obsługę największego ruchu w witrynach internetowych. Nginx to potężne narzędzie przekierowujące, które można łatwo skonfigurować w systemie, aby przekierować mniej bezpieczny lub nieszyfrowany ruch internetowy HTTP do zaszyfrowanego i zabezpieczonego serwera HTTPS. Jeśli jesteś administratorem systemu lub programistą, regularnie korzystasz z serwera Nginx.

W tym artykule będziemy pracować nad tym, jak przekierować ruch internetowy z HTTP do bezpiecznego HTTPS w Nginx.







Odpowiedzi i żądania są zwracane w postaci zwykłego tekstu w HTTP, podczas gdy HTTPS używa protokołu SSL/TLS do szyfrowania komunikacji między systemem klient-serwer. Dlatego z wielu powodów HTTPS jest używany przez HTTP, które są wymienione poniżej:



  • Wszystkie dane pomiędzy klientem a serwerem w obu kierunkach są szyfrowane. Jednak nikt nie może uzyskać dostępu do poufnych informacji, jeśli zostaną przechwycone.
  • Gdy korzystasz z protokołu HTTPS, Google Chrome i inne przeglądarki uznają Twoją domenę witryny za bezpieczną.
  • Wersja HTTPS poprawia wydajność określonej witryny przy użyciu protokołu HTTP/2.
  • Jeśli obsługujesz domenę swojej witryny przez HTTPS, witryna będzie miała lepszą pozycję w Google, ponieważ faworyzuje wszystkie witryny zabezpieczone HTTPS.

Preferowane jest przekierowywanie ruchu HTTP do HTTPS w Nginx w osobnym bloku serwera dla każdej wersji witryny. Zaleca się również unikanie przekierowywania ruchu przy użyciu kierunku, który może powodować nietypowe zachowanie serwera.



Przekieruj cały ruch z HTTP na HTTPS

Dodaj następujące zmiany do pliku konfiguracyjnego Nginx, aby przekierować cały ruch z wersji HTTP na HTTPS:





serwer {
słuchać 80serwer_domyślny;
Nazwa serwera _;
powrót 301https: //$host$request_uri;
}

Poniżej opracowaliśmy każdy z powyższych terminów:

Listen 80 default_server – to zasygnalizuje systemowi, że przechwytuje cały ruch HTTP na porcie 80.
Server_name _ – jest to domena, która będzie pasować do dowolnej nazwy hosta.



Return 301 https://$host$request_uri – informuje wyszukiwarki, które przekierowują je na stałe. Określa, że ​​zmienna $host przechowuje nazwy domen.

Po zmianie ustawień konfiguracyjnych musisz ponownie załadować usługi Nginx w swoim systemie. Załaduj ponownie usługi Nginx za pomocą następującego polecenia:

$sudosystemctl przeładuj nginx

Przekieruj wersję HTTP do HTTPS dla określonej domeny w Nginx

Po zainstalowaniu certyfikatu SSL w swojej domenie będziesz mieć dwie opcje blokowania serwera dla tej domeny. Jeden blok dotyczy wersji HTTP nasłuchującej na porcie 80, a druga wersja to HTTPS na porcie 443. Aby jednak przekierować pojedynczą domenę witryny z HTTP na HTTPS, musisz otworzyć konfigurację Nginx. Możesz znaleźć ten plik konfiguracyjny w katalogu /etc/nginx/sites-available. W każdym razie, jeśli nie znalazłeś tego pliku, możesz go wyszukać za pomocą /etc/nginx/nginx.conf, /usr/local/nginx/conf lub /usr/local/etc/nginx, a następnie wykonać następujące zmiany w tym pliku:

serwer {
słuchać 80;
Nazwa serwera nazwa-domeny.com www.nazwa-domeny.com;
powrót 301https://nazwa-domeny.com$request_uri;
}

Rozumiemy powyższy kod linia po linii.
Listen 80 – na porcie 80 serwer będzie nasłuchiwał wszystkich połączeń przychodzących z określonej domeny.

nazwa_serwera nazwa-domeny.com www.nazwa-domeny.com – określa nazwy domen. Zastąp go nazwą domeny witryny, którą chcesz przekierować.

Return 301 https://nazwa-domeny.com$request_uri – przenosi ruch do wersji HTTPS strony. Zmienna $request_uri jest używana dla pełnego oryginalnego identyfikatora URI żądania, w którym zawarte są również argumenty.

Korzystając z następującej metody, możesz przekierować ruch do wersji HTTPS z www do wersji witryny bez www. Zaleca się utworzenie przekierowania w osobnym bloku serwera zarówno dla wersji innych niż www, jak i www.

Wyjaśnijmy na przykładzie. Jeśli chcesz przekierować żądania www HTTPS do wersji bez www, postępuj zgodnie z następującą konfiguracją:

serwer {
słuchać 80;
Nazwa serwera nazwa-domeny.com www.nazwa-domeny.com;
powrót 301https://nazwa-domeny.com$request_uri;
}
serwer {
słuchać 443 SSL http2;
Nazwa serwera www.nazwa-domeny.com;
# . . . inny kod
powrót 301https://nazwa-domeny.com$request_uri;
}
serwer {
słuchać 443 SSL http2;
Nazwa serwera nazwa-domeny.com;

# . . . inny kod
}

Zastąp nazwę domeny swoją domeną, np. www.linuxhint.com.

Wniosek

Omówiliśmy, jak przekierować ruch z wersji HTTP do HTTPS na serwerze Nginx. Zmieniając ustawienie pliku konfiguracyjnego Nginx, możesz łatwo przekierować ruch do HTTPS dla określonej domeny lub przekierować wszystkie. Ta metoda, o której wspomnieliśmy w tym artykule, może pomóc w zwiększeniu bezpieczeństwa Twojej witryny poprzez wprowadzenie jakichkolwiek zmian w doświadczeniu użytkownika.