So leiten Sie www mit Nginx unter CentOS 7 auf Nicht-www um

Einführung

Wenn Ihre Website oder Anwendung hinter einer Domain ausgeführt wird, ist es häufig wünschenswert, Ihren Benutzern auch den Zugriff über den einfachen Domainnamen und die Unterdomäne * www * zu ermöglichen. Das heißt, sie sollten in der Lage sein, Ihre Domain mit oder ohne das Präfix "http: // www. [Www.]" Zu besuchen, z. + example.com + oder + www.example.com + in einem Webbrowser und mit dem gleichen Inhalt dargestellt werden. Obwohl es eine Vielzahl von Möglichkeiten gibt, dies einzurichten, besteht die beste Lösung aus Gründen der Konsistenz und der Suchmaschinenoptimierung darin, die von Ihnen bevorzugte Domain ("plain" oder "www") auszuwählen und die andere Domain an die bevorzugte Domain weiterzuleiten. Diese Art der Umleitung wird als "Permanente Umleitung" oder "301-Umleitung" bezeichnet und kann einfach eingerichtet werden, indem Sie Ihre DNS-Ressourceneinträge und die Webserver-Software ordnungsgemäß konfigurieren.

In diesem Tutorial erfahren Sie, wie Sie eine WWW-URL zu einer nicht-WWW-URL umleiten, z. + www.example.com + bis + example.com +, mit Nginx unter CentOS 7. Wir zeigen Ihnen auch, wie Sie von einer Nicht-WWW-URL zu http: // www [www] umleiten können. Die Ubuntu 14.04-Version dieses Tutorials ist hier unter https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-wwwwwith-nginx-on-ubuntu-14-04 verfügbar ].

Wenn Sie diese Art der Weiterleitung mit Apache als Webserver ausführen möchten, sollten Sie stattdessen diesem Lernprogramm folgen: https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-apache-on-centos-7 [So leiten Sie mit Apache unter CentOS 7 www nach non-www um].

Voraussetzungen

In diesem Lernprogramm wird davon ausgegangen, dass Sie über Superuser-Berechtigungen verfügen, d. H. + sudo + oder root auf dem Server, auf dem Nginx ausgeführt wird. Wenn Sie das noch nicht eingerichtet haben, folgen Sie diesem Tutorial: Initial Server Setup on CentOS 7.

Es wird davon ausgegangen, dass Sie Nginx installiert haben. Wenn Sie dies noch nicht eingerichtet haben, finden Sie unter Nginx tag mehrere Tutorials zu diesem Thema.

Sie müssen in der Lage sein, dem DNS, das Ihre Domain verwaltet, Einträge hinzuzufügen. Wenn Sie noch keine Domain haben, können Sie eine von einem Domain-Registrar erwerben und diese mit dem DNS des Registrars oder https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean- verwalten. Nameserver-von-Common-Domain-Registraren [DNS von DigitalOcean]. In diesem Tutorial verwenden wir DigitalOcean DNS, um die erforderlichen Datensätze zu erstellen.

Beginnen wir mit der Konfiguration Ihrer DNS-Einträge.

DNS-Einträge konfigurieren

Um die gewünschte Weiterleitung von "+ www.example.com " zu " example.com +" oder umgekehrt einzurichten, müssen Sie für jeden Namen einen * A-Datensatz * haben.

Öffnen Sie alles, was Sie zur Verwaltung Ihres DNS verwenden. In unserem Beispiel wird DigitalOcean DNS verwendet.

Wenn noch kein Domäneneintrag (auch als Zoneneintrag bezeichnet) vorhanden ist, erstellen Sie jetzt einen. Der * Hostname * sollte Ihre Domain sein, z. + example.com +, und die IP-Adresse sollte auf die öffentliche IP-Adresse Ihres Nginx-Servers eingestellt sein. Dadurch wird automatisch ein A-Eintrag erstellt, der Ihre Domain auf die von Ihnen angegebene IP-Adresse verweist. Wenn Sie ein anderes System zum Verwalten Ihrer Domain verwenden, müssen Sie dies möglicherweise manuell hinzufügen.

Fügen Sie als Nächstes einen weiteren A-Eintrag mit "www" als Hostnamen hinzu (oder "http://www.example.com [www.example.com]", wenn die partielle Unterdomäne nicht funktioniert), und geben Sie dieselbe IP-Adresse an.

Wenn Sie beide Datensätze erstellt haben, sollte dies ungefähr so ​​aussehen:

Jetzt sollte Ihr Server über die Domain www und non-www erreichbar sein, aber die Umleitung muss noch eingerichtet werden. Das machen wir jetzt.

Konfigurieren Sie Nginx Redirect

Um die 301-Umleitung auszuführen, müssen Sie einen neuen Nginx-Serverblock hinzufügen, der auf Ihren ursprünglichen Serverblock verweist.

Öffnen Sie Ihre Nginx-Serverblockkonfiguration in einem Editor. Wir fügen dem Nginx-Include-Verzeichnis eine weitere Konfigurationsdatei mit dem Namen "+ redirect.conf +" hinzu:

sudo vi /etc/nginx/conf.d/redirect.conf

Ihr ursprünglicher Serverblock sollte bereits definiert sein. Verwenden Sie je nach Richtung, in die Sie umleiten möchten, eine der folgenden Optionen.

Option 1: Leiten Sie www zu Nicht-www um

Wenn Sie Benutzer von www zu einer normalen, nicht www-fähigen Domain umleiten möchten, fügen Sie diese Konfiguration ein:

Neuer Serverblock - www bis nicht www

server {
   server_name www.;
   return 301 $scheme://$request_uri;
}

Speichern und schließen. Dadurch wird Nginx so konfiguriert, dass Anforderungen an "http://www.example.com [www.example.com]" an "example.com" umgeleitet werden. Beachten Sie, dass es einen anderen Serverblock geben sollte, der Ihren Nicht-WWW-Webserver definiert.

Starten Sie Nginx neu, um die Änderungen zu übernehmen:

sudo systemctl restart nginx

Beachten Sie, dass bei Verwendung von HTTPS die Anweisung "+ listen " auf " 443 " anstelle von " 80 +" gesetzt werden sollte.

Verwenden Sie diesen Befehl, um sicherzustellen, dass die Nicht-WWW-Domäne zur WWW-Domäne umleitet (ersetzen Sie den hervorgehobenen Teil durch Ihre tatsächliche Domäne):

curl -I http://www.

Sie sollten eine "+301 dauerhaft verschoben +" - Antwort erhalten, die den Nicht-WWW-Umleitungsort wie folgt anzeigt:

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http:///

Natürlich sollten Sie auf Ihre Domain in einem Webbrowser (www und nicht www) zugreifen, um sicherzugehen.

Option 2: Leiten Sie Nicht-WWW zu WWW um

Wenn Sie Benutzer von einer einfachen Nicht-WWW-Domäne zu einer WWW-Domäne umleiten möchten, fügen Sie diesen Serverblock hinzu:

Neuer Server-Block - Nicht-WWW bis WWW

server {
   server_name ;
   return 301 $scheme://www.$request_uri;
}

Speichern und schließen. Dadurch wird Nginx so konfiguriert, dass Anforderungen an "example.com" an "http://www.example.com [www.example.com]" umgeleitet werden. Beachten Sie, dass es einen anderen Serverblock geben sollte, der Ihren WWW-Webserver definiert.

Starten Sie Nginx neu, um die Änderungen zu übernehmen:

sudo systemctl restart nginx

Beachten Sie, dass bei Verwendung von HTTPS die Anweisung "+ listen " auf " 443 " anstelle von " 80 +" gesetzt werden sollte.

Verwenden Sie diesen Befehl, um sicherzustellen, dass die Nicht-WWW-Domäne zur WWW-Domäne umleitet (ersetzen Sie den hervorgehobenen Teil durch Ihre tatsächliche Domäne):

curl -I http://

Sie sollten eine "+301 dauerhaft verschoben +" - Antwort erhalten, die den WWW-Umleitungsort wie folgt anzeigt:

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://www./

Natürlich sollten Sie auf Ihre Domain in einem Webbrowser (www und nicht www) zugreifen, um sicherzugehen.

Fazit

Das ist es! Ihre permanente Nginx-Umleitung ist jetzt ordnungsgemäß konfiguriert, und Ihre Benutzer können über Ihre Nicht-WWW- und WWW-Domain auf Ihren Webserver zugreifen.