Plesk 11.5: Nginx und WordPress

Plesk 11.5 bietet eine sehr bequeme Möglichkeit zur Nutzung des Webservers Nginx. Damit kann man sehr ressourcensparend und effizienter auch größere Websites betreiben. Die Verwendung von Nginx für alle statischen Inhalte ist völlig problemlos – man wählt im Plesk Panel im Reiter “Websites & Domains” einfach den Punkt “Webserver-Einstellungen” und kreuzt “Intelligente Bearbeitung statischer Dateien” und “Statische Dateien direkt durch Nginx bedienen” an. Fertig.

Besser ist es natürlich aber auch den Punkt “PHP von Nginx verarbeiten lassen” auszuwählen – die Speicher- und CPU-Auslastung des Servers geht in diesem Fall spürbar zurück. Betreibt man jedoch eine WordPress-basierte Website mit benutzerdefinierten URL-Struktur (Permalinks), dann gibt es Probleme: da die Rewrite-Regel des Apachen nicht mehr abgearbeitet wird, kommt es hier zu Fehlermeldungen.

Dies lässt sich jedoch relativ einfach lösen – man kann nämlich im Plesk-Panel einfach “Zusätzliche Nginx-Anweisungen” einfügen. Hier meine zusätzlichen Regeln. Es sind drei Stück – Regel Nr. 1 sorgt für die Anpassung der benutzerdefinierten URLs. Regel Nr. 2 ist eine Anweisung für das Browsercaching (bitte die entsprechenden statistischen Filearten dann entsprechend oben bei “Statische Dateien direkt durch Nginx bedienen” aus der dortigen Liste nehmen). Und Regel Nr. 3 aktiviert die Komprimierung für alle Textfiles (hier wurde eine kleine Anpassung beim Betrieb von Plesk 12 nötig).

if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control “public”;
try_files $uri @fallback;
}

gzip on;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

Mit dieser Konfiguration ist meine Pagespeed bei Google erheblich (!) angestiegen und benutzerdefinierte URLs machen kein Problem mehr. Und die Serverauslastung ist deutlich zurückgegangen. Mein Eindruck ist außerdem, dass Nginx im Dauerbetrieb deutlich stabiler läuft als der Apache.

Hier nochmal ein Foto der Einstellungen:

Plesk 11.5: Einstellungen für Nginx und WordPress

Kommentare zur Verbesserung, bzw. Optimierung dieser Regeln sind willkommen!