Nginx unter Ubuntu 14.04 konfigurieren

Nginx entwickelt sich immer mehr vom unbekannten kleinen Webserver im Schatten von Apache2 zum Platzhirsch im Serverbereich. Die einfache Konfiguration kombiniert mit hoher Geschwindigkeit bringt immer mehr User zum 2004 erstmals veröffentlichten Newcomer. In diesem Artikel beschäftigen wir uns mit der Installation und Konfiguration von Nginx unter Ubuntu 14.04.

Nginx installieren

Die Installation von Nginx unter Ubuntu 14.04 könnte kaum einfacher sein, schließlich müssen wir dafür nur einen einzigen Befehl ausführen:

Unser Paketmanager apt lädt dabei die nötigen Dateien herunter, installiert den Webserver und startet ihn auch direkt. Browsen wir nun zur Domain oder IP unseres Servers (zum Testen empfehle ich entweder einfach eine virtuelle Maschine mit Vagrant oder ein Droplet bei DigitalOcean zu starten – so können wir sicher und nach Herzenslust experimentieren) präsentiert Nginx uns direkt die Standardseite mit Welcome to Nginx! Sowohl Installation als auch Starten haben also funktioniert.

 

Nginx Konfiguration

Die Konfigurationsdateien für Nginx finden wir im Verzeichnis /etc/nginx. Besondere Aufmerksamkeit haben hier die Verzeichnisse sites-available sowie sites-enabled verdient.

  • In sites-available finden wir Konfigurationsdateien, die unsere einzelnen Server spezifizieren. Das können zum Beispiel verschiedene Domains, Subdomains oder auch einzelne IPs sein, die Nginx bedienen soll. Dazu gleich mehr. Die einzelnen Dateien brauchen die Dateiendung .conf
  • In sites-enabled finden wir Symlinks, die auf die jeweiligen .conf Dateien im ersten Verzeichnis zeigen. Alle hier verlinkten Konfigurationen sind in Nginx aktiv – werden also vom Server bedient. Dadurch haben wir ganz einfach die Möglichkeit, Konfigurationen zu aktivieren oder deaktivieren. Um eine Konfiguration zu aktivieren erstellen wir einfach den passenden Symlink, um sie zu deaktivieren entfernen wir ihn wieder und starten den Server neu.

 

 

Außerdem gibt es noch die Datei nginx.conf und das Verzeichnis conf.d welche äußerst aufschlussreich sein können.

  • Die Konfigurationsdatei nginx.conf enthält die grundlegende Konfiguration unseres Nginx Servers.
  • Eine wichtige Einstellung ist hierbei die Einstellung user. Diese definiert den Betriebssystemuser, unter dem die Seiten ausgeführt werden. Wird nur ein Parameter angegeben (zum Beispiel www-data) wird automatisch User und Gruppe gleich gesetzt, man kann aber auch verschiedene Werte durch ein Leerzeichen getrennt angeben. Diese Einstellung ist gerade für Zugriffsrechte sehr wichtig.
  • Etwas weiter unten in der Datei finden wir auch den Grund für unser sites-enabled / sites-available Konstrukt von oben: include /etc/nginx/sites-enabled/*; Es werden also alle Dateien im Ordner sites-enabled automatisch mit in diese Konfiguration einbezogen. Da diese nur Symlinks zu den Dateien in sites-available darstellen werden eigentlich diese Dateien inkludiert, aber eben nur dann wenn ein Symlink existiert. So können wir ganz simpel eine Konfiguration deaktivieren ohne sie zu löschen indem wir nur den Symlink löschen.
  • An derselben Stelle werden außerdem noch alle Konfigurationsdateien aus dem Verzeichnis conf.d inkludiert. Hier können wir die Konfiguration also bequem erweitern.

Um geänderte Konfigurationen live zu schalten müssen wir dem Server außerdem noch mitteilen, diese erneut zu laden, während er läuft. Zuvor sollten wir aber noch einen Zwischenbefehl ausführen, der die Konfiguration einfach nur überprüft falls wir uns irgendwo vertippt haben. Dafür benutzen wir den Befehl

Dieser liefert ein [OK] wenn die Konfiguration Sinn macht und keine Fehler enthält. Wenn die Konfiguration passt können wir diese neu einlesen.

 

 

Einzelne Server konfigurieren

In den Konfigurationsdateien im sites-available Verzeichnis können wir einzelne server-Blöcke definieren. Ein server-Block kann dabei alles mögliche darstellen – eine Domain, eine Subdomain, Load Balancing etc. Hier stellen wir ein, worauf Nginx hören soll (beispielsweise welche IP, welche Domain, welchen Port etc) und was danach passiert (zum Beispiel einfach Dateien ausliefern oder die Requests für Load Balancing auf mehrere andere Server verteilen). Sehen wir uns mal ein ganz simples Beispiel an:

Die Konfiguration wird dabei von oben nach unten durchgegangen (da die Dateien in sites-enabled alphabetisch sortiert werden ist hier der Dateiname möglicherweise wichtig). Die erste Serverkonfiguration, die die Bedingungen erfüllt, wird dann aktiviert. Trifft das auf keine Serverkonfiguration zu wird die Konfiguration mit dem Stichwort default_server aktiviert (siehe Beispiel). Dieses sollte also nur einmal verwendet werden.

Aber gehen wir die hier beschriebenen Konfigurationen erstmal Schritt für Schritt durch:

  1. server_name: Hier listen wir die Domains (und / oder Subdomains) auf, auf die der Server reagieren soll.
  2. listen: Dieses Statement listet die Ports auf, auf die der Server hören soll. Standard wären hier Port 80 für HTTP und Port 443 für HTTPS.
  3. root: Das root Verzeichnis ist das Verzeichnis, in dem nginx nach den gewünschten Dateien sucht – also quasi das Hauptverzeichnis für unsere Website. Hier müssen dann die Lese- / Schreibrechte beachten für den User, den wir in der Konfiguration oben angegeben haben.

Soweit dazu. Mit dieser einfachen Konfiguration können wir bereits Dateien ausliefern und normale statische Webseiten bedienen. Natürlich können wir auch mehrere dieser Konfigurationen aktivieren um beispielsweise mehrere Seiten mit einem (physischen) Server zu bedienen.

In einem späteren Artikel kümmern wir uns um die tiefergehende Konfiguration wie beispielsweise die Aktivierung von PHP.

 

Welche Erfahrungen hast du mit Nginx gemacht? Schreib mir gerne einen Kommentar unter den Artikel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*