So verwenden Sie Nginx, um den gesamten Datenverkehr von HTTP auf HTTPS umzuleiten

So verwenden Sie Nginx, um den gesamten Datenverkehr von HTTP auf HTTPS umzuleiten

Wenn Ihre Website mit Nginx gehostet wird und SSL aktiviert ist, ist es die beste Praxis, HTTP vollständig zu deaktivieren und den gesamten eingehenden Verkehr auf die HTTPS -Version der Website zu zwingen. Dies vermeidet doppelte Inhalte und stellt sicher, dass alle Benutzer der Website nur die sichere Version Ihrer Website durchsuchen. Sie sollten auch einen SEO-Boost sehen, da Suchmaschinen nicht redundante und gesicherte Webseiten bevorzugen.

In dieser Anleitung gehen wir davon aus. Auch wenn ein Benutzer zufällig einem folgt http: // Link, die Website sollte sie an die richtige und gesicherte Seite senden, die sofort und ohne Intervention des Benutzers stattfindet.

Es gibt zwei Möglichkeiten, diese Umleitung in Nginx einzurichten. Mit einer Methode können Sie die Umleitung für einzelne Standorte konfigurieren. Die andere Methode kann HTTP für alle Nginx -Websites auf Ihrem Server auf HTTPS umleiten. Wir werden die Schritt -für -Schritt -Anweisungen für beide Methoden unten abdecken. Lass uns anfangen.

NOTIZ
Verwenden Sie Apache anstelle von nginx? Wir haben eine separate Anleitung für die Umleitung des gesamten HTTP -Datenverkehrs auf HTTPS geschrieben, um mit Apache umzuleiten.

In diesem Tutorial lernen Sie:

  • So leiten Sie HTTP auf HTTPS für einzelne Nginx -Websites um
  • So leiten Sie HTTP auf HTTPS für alle Nginx -Websites um
Umleiten Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Jede Linux -Distribution
Software Nginx
Andere Privilegierter Zugriff auf Ihr Linux -System als Root oder über die sudo Befehl.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

HTTP auf HTTPS für einzelne Standorte umleiten



Wir müssen Änderungen an der NGINX -Serverkonfigurationsdatei vornehmen, um den Verkehr umzuleiten. Öffnen Sie es mit Ihrem bevorzugten Texteditor.

$ sudo nano/etc/nginx/sites-verfügbare/your_conf_file 

In dieser Datei sollten mindestens zwei Blöcke vorhanden sein - eine, die die Konfiguration für HTTP -Verbindungen (Port 80) und eine steuert, die HTTPS steuert (Port 443). Fügen Sie unter dem HTTP -Teil den folgenden 301 -Umleitungscode ein. Ersetzen Sie natürlich die Beispieldomäne durch die Domäne Ihrer Website.

Server Listen 80; server_name Beispiel.com www.Beispiel.com; Rückgabe 301 https: // Beispiel.com $ request_uri;  

Wie Sie sehen können, hört der Code auf Port 80 auf eingehende Verbindungen zu Hörer Beispiel.com Und www.Beispiel.com. Es leitet diese Verbindungen dann zu derselben URL weiter, aber mit https: //.

Unter dem HTTP -Block benötigen Sie einen HTTPS -Block, wenn Sie noch keinen gemacht haben.

Server Listen 80; server_name Beispiel.com www.Beispiel.com; Rückgabe 301 https: // Beispiel.com $ request_uri;  server hören 443 SSL; server_name Beispiel.com; SSL_Certificate -Beispiel.com.CRT; SSL_Certificate_Key Beispiel.com.Taste; # Andere Konfiguration 

Aber was ist mit Verbindungen zu https: // www.Beispiel.com (Beachten Sie den www.)? Um diese Verbindungen auch umzuleiten, benötigen wir einen weiteren Block mit einer 301 -Umleitung. Insgesamt würde die Konfigurationsdatei so aussehen (obwohl Ihre möglicherweise zusätzliche Konfiguration aufweist):

Server  # Alle HTTP in HTTPS Hören Sie 80; server_name Beispiel.com www.Beispiel.com; Rückgabe 301 https: // Beispiel.com $ request_uri;  Server  # HTTPS www umleiten. Hören Sie 443 SSL; server_name www.Beispiel.com; Rückgabe 301 https: // Beispiel.com $ request_uri;  server hören 443 SSL; server_name Beispiel.com; SSL_Certificate -Beispiel.com.CRT; SSL_Certificate_Key Beispiel.com.Taste; # Andere Konfiguration 


Stellen Sie sicher, dass Sie einen SystemCTL -Befehl verwenden, um Nginx neu zu starten oder neu zu laden.

$ sudo systemctl reload nginx 

Ihre Website sollte jetzt immer zu einer URL mit dem Format von leiten https: // Beispiel.com, unabhängig davon, ob der Link von voranggesteuert wurde durch http: // und/oder www..

Http für alle Websites auf HTTPS umleiten

Um den Datenverkehr für alle Ihre Nginx-gehosteten Websites umzuleiten, geben Sie den folgenden Code in Ihre Konfigurationsdatei ein:

Server Listen 80 default_server; Hören [::]: 80 default_server; Servername _; Rückgabe 301 https: // $ host $ request_uri;  

Dies ist so gut wie der obige Code, außer dass es Variable verwendet $ Host Es kann also auf jede URL angewendet werden, die Nginx hostet. Diese Methode mag etwas bequemer sein, aber Sie verlieren einen Teil der granularen Steuerung, die Sie haben, wenn jede Website ihre eigenen Serverblöcke hat. Verwenden Sie Ihren eigenen Diskretion und wählen Sie die von Ihnen gefallene Methode aus.

Abschluss

In den meisten Fällen gibt es keinen Grund, HTTP weiterhin zu verwenden, wenn Ihre Website HTTPS anbieten kann. Es ist sicherer, gibt dem Benutzer beruhigt und die Website wird einen kleinen SEO -Schub erhalten. In diesem Artikel haben wir gesehen, wie einfach es war, den gesamten Verkehr auf HTTPs umzuleiten und HTTP vollständig loszuwerden. Beide dieser Methoden können den HTTP -Datenverkehr auf HTTPS auf Ihren Website (en) erzwingen.

Verwandte Linux -Tutorials:

  • Ubuntu 20.04: WordPress mit Nginx -Installation
  • Dinge zu installieren auf Ubuntu 20.04
  • Einführung in MySQL -Speichermotoren
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Ubuntu 20.04 WordPress mit Apache -Installation
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mastering -Bash -Skriptschleifen beherrschen
  • Dinge zu installieren auf Ubuntu 22.04
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Ubuntu 20.04 Leitfaden