Problem
Seit Plesk 10.4 kann Nginx als Proxy dazu installiert werden. Hier war es noch im Beta-Stadium. Seit Plesk 11 ist es anscheinend "stable" und von einigen Hostern in seinen vorinstallierten Server-Images schon mit drin.
Dennoch macht Nginx regelmäßig ärger. Heute gehe ich auf lang ladende Seiten ein. Die sollten im Regelfall nicht vorkommen, aber es gibt einige Scripte die (meist im Backend-Bereich) aufwendige Berechnungen, Datei-Transfer oder ähnliches machen müssen. Hier hilft es nicht mehr die PHP-Timeouts hoch zu setzten (was man in Plesk inzwischen alles selber einstellen kann), sondern der Nginx liefert nach 65 Sekunden einen "504 Gateway Time-out".
Lösung:
Im Gegensatz zu früher hat sich Parallels inzwischen Gedanken zu Fremdeingriffen / Customizing gemacht und eine ansprechende Lösung gefunden. So sind alle Scripte die Konfigurations-Dateien erzeugen nicht mehr "closed source" sondern offenes PHP. Das Ganze ist so organisiert, dass man sogar Update-sicheres "Overwriting" betreiben kann.
Wie dies vorgeht will ich am o.g. Problem einmal vorführen:
Für o.g. Problem recht es die Direktive proxy_read_timeout
in die Konfiguration ein zu bringen. Hierzu kopieren wir das default-Template zur Erstellung der Nginx-Vhosts und verändern den kleinen Teil.
Das Template-Basisverzeichnis lautet /usr/local/psa/admin/conf/templates/
. Das Verzeichnis default
enthält die Plesk-Dateien. Diese bearbeiten wir niemals direkt. Denn sie werden ggf. bei einem Plesk-Update überschrieben.
Stattdessen legen wir ein Verzeichnis custom
an, welches Plesk nach Templates als erstes durchsucht. Diese Suche ist bereits in Plesk einprogrammiert. Dazu muss man nichts mehr ändern.
Wichtig ist, dass man die Verzeichnisstruktur aus default
beibehält. Da wir die Datei default/domain/nginxDomainVirtualHost.php
verändern wollen, brauchen wir also auch das Verzeichnis domain
. Beide neuen Verzeichnisse legen wir mit einem Befehl an und kopieren die Datei:
mkdir -p /usr/local/psa/admin/conf/templates/custom/domain cp -p /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php \ /usr/local/psa/admin/conf/templates/custom/domain/.
Nun kann man die neue Datei bearbeiten. Folgende Zeile habe ich gegen Ende der Datei vor die proxy_set_header
eingefügt:
proxy_read_timeout 150;
Mit 150 Sekunden hat das Backend (bei mir die Joomla-Erweiterung "sh404sef") ausreichend Zeit seine Dateien zu scannen und das Ergebnis dar zu stellen.
Damit die Änderung auch für alle Vhosts in einem Rutsch übernommen wird, startet man einen reconfigure-all
:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all