Synology DSM 6.1: WordPress mit Nginx nutzen

Synology mit Wordpress und NGINX

Eine Lösung für diejenigen, die eine Synology Diskstation als Webserver nutzen und auch WordPress über Nginx betreiben wollen, ohne zusätzlich Apache 2.2 zu installieren.


Wer zuhause eine Synology Diskstation als Webserver nutzt, kennt vielleicht das Problem: Seit DSM 6.0 läuft im Hintergrund Nginx als Standardwebserver. Das hat auch seinen Grund, denn Nginx bietet gerade in Sachen Geschwindigkeit eine ganze Menge Vorteile im Vergleich zum früher genutzten Apache.

Wer seine Website über WordPress am laufen hat, bekommt aber spätestens Probleme, wenn er über Permalinks auf die verschiedenen Unterseiten verlinkt. Die Unterseite wird nämlich einfach nicht gefunden. Das liegt daran, dass WordPress die Permalinks-Konfiguration in die Datei .htaccess schreibt. Diese Datei wird beim Apache-Webserver standardmäßig gelesen und entsprechend deren Anweisungen ausgeführt. Beim Nginx allerdings ist das nicht so. Damit nginx mit Permalinks etwas anfangen kann, muss zunächst in der Serverkonfiguration folgende Ergänzung hinzugefügt werden:

location /{
try_files $uri $uri/ /index.php?$args;
}

Wo aber genau liegt die Datei, die diesen Zusatz enthalten muss? Zahlreiche Antworten diverser Foren schlugen bei mir fehl, da sich Synology in bestimmten Systemkonfigurationen aus Sicherheitsgründen nicht einfach rumfingern lässt. Die vorgenommen Änderungen werden nämlich nach einigen Minuten wieder durch Synology in den Originalzustand überschrieben und sind somit nutzlos. Als Alternative kann zusätzlich das Apache 2.2 Paket installiert werden.

Damit wollte ich mich nicht abfinden und habe nun folgende Lösung gefunden. Als Bespiel habe ich diese Website www.rolf-kohler.de als Virtuellen Host auf der Synology eingerichtet und diesen auch für Nginx und PHP7 deklariert.

Kommen wir nun zur besagten Konfigurationseinstellung des erzeugen Virtuellen Host. Dazu lesen wir zunächst die Datei VirtualHost.json aus:

sudo cat /var/packages/WebStation/etc/VirtualHost.json

Unter anderem finden wir darin einige Einträge zum eben erstellten Virtuellen Host. Hier ein Beispiel:

"18931fa34-ff1de-44e1-8f95-441a8ef78ak11" : {
"backend" : 0,

"fqdn" : "www.rolf-kohler.de",

"https" : {

"compatibility" : 1,

...

Nun kopiert man sich die ID des Virtuellen Host (in meinem Beispiel: 18931fa34-…..8ak11)  in die Zwischenablage und wechselt in das Verzeichnis
/usr/local/etc/nginx/conf.d/ gefolgt vom Verzeichnis der ID aus der Zwischenablage.

cd /usr/local/etc/nginx/conf.d/18931fa34-ff1de-44e1-8f95-441a8ef78ak11

In diesem Verzeichnis erstellen wir die Datei „user.conf.wordpress-permalink“ (Name gleichgültig) und fügen darin folgenden Text ein:

location /{
try_files $uri $uri/ /index.php?$args;
}

Nach diesem Eintrag ist Nginx neu zu starten:

sudo synoservicecfg --restart nginx

Danach akzeptiert WordPress auch die Permalink-Funktion.