Website-Icon HOPPLIN GmbH [dev] Blog

HTTP-Umleitungen für nginx

HTTP Umleitungen für nginx - Foto: Taylor Vick m5tzZtFCOfs unsplash
Rate this post

Es gibt viele Gründe, HTTP Umleitungen für Webseiten in der Konfiguration des Servers (in diesem Artikel hier nginx) einzusetzen. Beispielsweise wenn du eine Seite erneuerst du oder ein Link auf externen Seiten verwendet wird. Je nach Bedarf gibt es dazu einige Möglichkeiten um dem Webserver davon zu überzeugen, gültige Anfragen direkt weiterzuleiten. In der Konfiguration können Diese temporär sowie auch permanent konfiguriert werden. Wichtig dabei ist, dass der Server im Antwort-Header den richtigen HTTP-Statuscode zurücksendet. Hier zuerst einmal einige Beispiele:

Weitere Statuscodes sowie deren ausführlichen Beschreibungen findest du auf der deutschen Wikipedia Seite unter de.wikipedia.org/wiki/HTTP-Statuscode

Achtung: In diesem Artikel werden keine internen Weiterleitungen (wie Proxy-Funktionalität) beschrieben. Hierzu schreibe ich in Kürze einen eigenen Artikel.

Permanente Weiterleitung im Webserver von HTTP nach HTTPS für nginx

Um alle Anfragen weiterzuleiten sind nur wenige Schritte notwendig. Im Folgenden legst du eine 2. server – Konfiguration direkt nach der Konfiguration der verschlüsselten server – Konfiguration anlegen.

server {
server_name www.example.com;
listen 443 ssl;
...
}

server {
server_name www.example.com;
listen 80;
if($host = www.example.com) {
return 301 https://$host$request_uri;
}
}

Einfache Weiterleitung innerhalb des Webservers

Innerhalb einer Serverkonfiguration kannst du überdies die location Funktion eine Weiterleitung konfigurieren. Diese Umleitungen verarbeitet nginx ab sofort so wie du sie benötigst. Sofern diese nur in geringer Anzahl da sind kannst du diese in der server Konfiguration direkt ablegen.

server {
  location /alt {
    return 302 /neu.html
  }
}

Innerhalb der location Definition gibt es unterschiedliche RegEx-Funktionen die du in der Dokumentation unter nginx.org/en/docs/ nachlesen kannst.

Mehrere Weiterleitungen im Webserver in einer zentralen Datei verwalten

Wenn du eine alte Seite erneuerst wird zwangsweise immer auf das gleiche Problem stoßen, eine permanente Weiterleitung im Webserver von nicht mehr vorhandenen Dateipfaden (URI’s). Daher hat nginx hier eine Möglichkeit geschaffen – die Verwendung einer Key -> Value Tabelle mittels Keymap-Datei

Zuerst wird eine map Datei erstellt (Dateiendung nicht notwendig). Ich verwende hierzu der Übersicht halber eine eigene Datei (die Konfiguration kannst du auch direkt in der jeder anderen schon verwendeten Datei gesetzt werden). path/to/com.example.www.map

map $request_uri $new_uri {
  /old/path.html    /new/path.html;
  /old-path/        /new-path/;
  /old-x            /new-y;
}

Diese Datei muss nur innerhalb der http Struktur eingefügt werden:
include path/to/com.example.www.map

Jetzt wird die Datei innerhalb der server Struktur einer Datei eingefügt:

include path/to/com.example.www.map

server {
  server_name www.example.com;
  listen 443 ssl;

  location / {
    if ($new_uri) {
      return 301 https://$host$new_uri;
    }
    try_files $uri $uri/;
  }
}

Mit dieser Lösung kannst du eine nginx Instanz für eine Domain sämtliche Anfragen bearbeiten. Alle anderen server -Konfigurationen bleiben allerdings infolgedessen davon unberührt.

Fazit

Ich hoffe, ich konnte dir auf deiner Suche nach einer Lösung zu HTTP Umleitungen für nginx helfen, abgesehen davon kannst du mir gerne mit Hilfe der Kommentar-Funktion über die Möglichkeiten diskutieren. Gerne auch Feedback – so kann ich den Artikel weiterhin aktualisieren.

Zuletzt noch eine Artikel-Empfehlung für dich. Möchtest du mehr über Monitoring in nginx erfahren? Ich habe einen Artikel über zwei Module – VTS und VTS-Exporter geschrieben.


Foto: unsplash-logoTaylor Vick

Die mobile Version verlassen