Nginx: Subdomains umschreiben

Derzeit bin ich dabei, erst einmal einfach konfigurierbare Domains nach Nginx umzuziehen. Heute war z.B. eine Domain darunter, die eigentlich nur 1:1 auf eine andere Domain verweist. Dazu gehören auch die entsprechenden Subdomains.

Leider fehlen der Rewrite-Sprache von Nginx hier und da ein paar Fähigkeiten (keine verschachtelten IF-Blöcke, keine logischen Verknüpfungen in IF-Abfragen, etc.), um soetwas elegant zu lösen. Aus diesem Grund bin ich nun zu folgender Lösung gekommen, um solche Domains (inkl. Subdomains) umzuleiten:

1
2
3
4
5
6
7
8
9
10
server {
  listen      80;
  server_name .example.com;

  set $subdomain "www";
  if ($host ~* "^(.*)\.example\.com$") {
    set $subdomain $1;
  }
  rewrite ^(.*)$ $scheme://$subdomain.example.net$1 break;
}

Der Server-Name mit vorangestelltem Punkt sorgt dafür, dass der Server-Block sich um alle Example.com-Hosts (inklusive sämtlicher Subdomains) kümmert. Anschließend setzen wir eine Variable "$subdomain" auf den Wert "www" (ich gehe hier davon aus, dass es keinen Unterschied macht, ob die Zielseite mit oder ohne "www" aufgerufen wird). Im Anschluss wird geprüft, ob der Domain eine Subdomain vorangestellt ist. Falls ja, wird die Variable $subdomain auf den Namen dieser Subdomain gesetzt. Abschließend wird ein Redirect durchgeführt und der gespeicherte Subdomain-Wert dabei mit berücksichtigt.
Verweisende Grüße, Kenny

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.