So verwenden Sie Nginx, um den gesamten Datenverkehr von http auf https umzuleiten
Wenn Ihre Website mit NGINX gehostet wird und SSL aktiviert ist, empfiehlt es sich, HTTP vollständig zu deaktivieren und den gesamten eingehenden Datenverkehr auf die HTTPS-Version der Website zu übertragen. Dies vermeidet doppelte Inhalte und stellt sicher, dass alle Benutzer der Website nur die sichere Version Ihrer Website durchsuchen. Sie sollten auch einen SEO-Schub sehen, da Suchmaschinen nicht redundante und sichere Webseiten bevorzugen.
In diesem Leitfaden gehen wir davon aus, dass Sie NGINX bereits auf einem Linux-System verwenden und den gesamten HTTP-Datenverkehr auf HTTPS umleiten möchten. Selbst wenn ein Benutzer einem http:// Link folgt, sollte die Website ihn auf die richtige und gesicherte Seite weiterleiten, was sofort und ohne Eingreifen des Benutzers geschieht.
Es gibt zwei Möglichkeiten, diese Umleitung in NGINX einzurichten. Mit einer Methode können Sie die Umleitung für einzelne Websites konfigurieren. Die andere Methode kann HTTP für alle NGINX-Sites auf Ihrem Server auf HTTPS umleiten, was praktisch ist, wenn Sie mehrere Sites eingerichtet haben und vermeiden möchten, dass Sie auf jede Site genau die gleiche Umleitung anwenden müssen. Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung für beide Methoden. Fangen wir an.
Verwenden Sie Apache anstelle von NGINX? Wir haben eine separate Anleitung für die Verwendung von Apache geschrieben, um den gesamten HTTP-Datenverkehr auf HTTPS umzuleiten.
In diesem Tutorial lernen Sie:
- So leiten Sie HTTP auf HTTPS für einzelne NGINX-Websites um
- So leiten Sie HTTP für alle NGINX-Websites auf HTTPS um
Umleiten von HTTP-Datenverkehr zu HTTPS in NGINX
Umleiten von HTTP zu HTTPS für einzelne Websites
Wir müssen Änderungen an der NGINX-Serverkonfigurationsdatei vornehmen, um den Datenverkehr umzuleiten. Öffnen Sie es mit Ihrem bevorzugten Texteditor.
sudo nano /etc/nginx/sites-available/your_conf_file
Diese Datei sollte mindestens zwei Blöcke enthalten – einen, der die Konfiguration für HTTP-Verbindungen (Port 80) steuert, und einen, der HTTPS (Port 443) steuert. Fügen Sie unter dem HTTP-Teil den folgenden 301-Umleitungscode ein. Ersetzen Sie natürlich die Beispieldomain durch die Domain Ihrer Website.
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
Wie Sie sehen können, lauscht der Code an Port 80 auf eingehende Verbindungen zu example.com und www.example.com. Diese Verbindungen werden dann an dieselbe URL weitergeleitet, jedoch mit https://.
Unterhalb des HTTP-Blocks benötigen Sie einen HTTPS-Block, falls Sie noch keinen erstellt haben.
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
# other configuration
}
Aber was ist mit den Verbindungen zu https://www.example.com (beachten Sie das www.)? Um diese Verbindungen ebenfalls umzuleiten, benötigen wir einen weiteren Block mit einer 301-Weiterleitung. In voller Länge würde die Konfigurationsdatei wie folgt aussehen (obwohl Ihre möglicherweise eine zusätzliche Konfiguration hat):
server {
# redirect all HTTP to HTTPS
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
# redirect HTTPS www.
listen 443 ssl;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
# other configuration
}
Stellen Sie sicher, dass Sie einen systemctl-Befehl verwenden, um NGINX neu zu starten oder neu zu laden, damit diese neuen Änderungen wirksam werden.
sudo systemctl reload nginx
Ihre Website sollte jetzt immer auf eine URL im Format https://example.com umleiten, unabhängig davon, ob dem Link http:// und/oder www. vorangestellt ist.
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;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
Dies ist so ziemlich das gleiche wie der obige Code, außer dass er variable $host verwendet, damit er auf jede URL angewendet werden kann, die NGINX hostet. Diese Methode ist zwar etwas bequemer, aber Sie verlieren einen Teil der detaillierten Kontrolle, die Sie haben, wenn jede Site über eigene Serverblöcke verfügt. Verwenden Sie Ihr eigenes Ermessen und wählen Sie die Methode, die Ihnen gefällt.
Schlussfolgerung
In den allermeisten Fällen gibt es keinen Grund, HTTP weiterhin zu verwenden, wenn Ihre Website HTTPS anbieten kann. Es ist sicherer, gibt dem Benutzer Sicherheit und die Website erhält einen kleinen SEO-Schub. In diesem Artikel haben wir gesehen, wie einfach es ist, den gesamten Datenverkehr auf HTTPS umzuleiten und HTTP vollständig loszuwerden. Jede dieser Methoden ist praktikabel, um den HTTP-Datenverkehr auf Ihrer Website(s) zu HTTPS zu zwingen.
