Teil Eins meiner Beitragsreihe: Nginx – Varnish – Apache – WordPress.

Installation und Konfiguration von Nginx für WordPress auf Ubuntu

Ein „apt-get install nginx“ auf einem neu installierten Ubuntu 14.04 (Trusty), gefolgt von einem „nginx -v“ auf der Konsole liefert eine ernüchternde Versionsnummer „1.4.6-1ubuntu3.1“ zurück.
Vergleicht man das mit der (heute) aktuellen, stabilen Version 1.8.0 auf Nginx.org, ist das durchaus als veraltet zu bezeichnen.

Also ist man gut beraten, die aktuelle, stabile Version von Nginx zu installieren. Nicht nur wegen der neuen Features, sondern auch, weil in Nginx ab Version 1.5.x z.B.  das SPDY Modul in der Version 3 eingebaut ist. Das hat den Charme, dass bei einer stringenten SSL Umsetzung das SPDY Modul im Nginx nur noch aktiviert werden muss.

Installation von Nginx auf Ubuntu in vier einfachen Schritten

# Installieren der Abhängigkeiten
sudo aptitude install software-properties-common python-software-properties

# Hinzufügen des Repositories
sudo add-apt-repository ppa:nginx/stable

# Update der Sources Listen
sudo aptitude update && aptitude safe-upgrade && aptitude clean

# Installieren von Nginx

sudo aptitude install nginx
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Status-Informationen einlesen... Fertig
Lese erweiterte Statusinformationen
Initialisiere Paketstatus... Fertig
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  nginx nginx-common{a} nginx-full{a}
0 Pakete aktualisiert, 3 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 584kB an Archiven herunterladen. Nach dem Entpacken werden 1.745kB zusätzlich belegt sein.
Wollen Sie fortsetzen? [Y/n/?]

Das war auch schon alles.

Konfiguration des Nginx als HTTP und HTTPS Proxy für Varnish

Der nächste Schritt ist nun die Grundkonfiguration des Nginx in der nginx.conf (/etc/nginx/nginx.conf)

Meine jeweils aktuell laufende nginx.config findet ihr auf GitHub.

Für die nun anstehende Konfiguration eines / mehrerer Vhost Dateien ist die letzte Zeile relevant: „include /etc/nginx/sites-enabled/*;
Aus der Erfahrung mit Apache macht es Sinn die konfigurierten Vhost Dateien in Zwei Ordnern vorzuhalten: „sites-available“ und „sites-enabled„.
Somit kann man in „sites-available“ in Ruhe konfigurieren, und danach in „sites-enabled“ den entsprechenden Symlink setzen um die Konfiguration zu aktivieren.

Tipp: ehe ihr den Nginx nach einer Konfiguration neu startet, kann ein kurzer Konfigcheck vor bösen Überraschungen, Tippfehlern, falsche Direktiven an der falschen Stelle etc. wahre Wunder wirken. Also z.B.

  • nginx -t
  • service nginx configtest
  • /etc/init.d/nginx configtest

Da es nichts zu verbergen gibt, findet ihr auch die Nginx Host Konfiguration meines Blogs auf GitHub.

Da ich an dieser Stelle keine Nginx Doku verfassen möchte, verweise ich für weitergehende Informationen auf die sehr gute Nginx Doumentation.

Die Nginx Vhost Konfiguration ist in zwei „Server“ Teile gegliedert: einen Teil für HTTP (Port 80) und einen Teil für HTTPS (Port 443).

Da ich den Login in mein WordPress Backend gerne SSL-Verschlüsselt hätte weise ich den Nginx mit der in  „location ~ ^/wp-login.php“ sitzenden Rewrite Regel an, Zugriffe auf die wp-login.php permanent auf HTTPS umzuleiten. Ob es an den eingestellten Werten für proxy_*_timeout und proxy_*_buffer* noch Optimierungsbedarf gibt, wird die Zukunft zeigen.

Im HTTPS Teil der Vhost Konfiguration ist es selbstverständlich wichtig, „ssl on“ zu setzen, die Pfade zu SSL Zertifikat und Key einzubauen, vor allem jedoch, die zu verwendeten SSL Protokolle und Ciphers gegenüber „Poodle“ abzusichern. Sprich man tut gut daran, SSLv2 und SSLv3 aus der „ssl_protocols“ Zeile zu entfernen, und nur noch TLS Protokolle zuzulassen. Nach der Einrichtung von SSL / TLS kann man hier auf der SSL Labs Webseite einen SSL / TLS Test laufen lassen. Das gute – oder auch weniger gute Ergebnis wird mittels Rankings und auch Verbesserungen anzeigt.

By the way: das gilt selbstverständlich auch für alle anderen Dienste auf einem Server die SSL/TLS anbieten: IMAP, POP3, SMTP etc. !

Der nächste Artikel „Teil Zwei meiner Beitragsreihe: Nginx – Varnish – Apache – WordPress: Installation und Konfiguration von Varnish für WordPress“ erscheint am 22.05.2015.