502 Bad Gateway bei Plesk

Neuerdings haben wir Parallels Plesk 12.0.18 im Einsatz das standardmäßig mit nginx als Reverse Proxy und Apache 2 kommt. Mit der Standardkonfiguration bekommen wir oftmals einen „502 Bad Gateway Error“ der den kompletten Webserver lahm legt. Was ist das?

502 Bad Gateway

Zu Anfang traten bereits bei den kleinsten Aufgaben regelmäßig Timeouts auf und nginx resignierte den Dienst mit der Meldung „502 Bad Gateway“.

Nach folgenden Anpassungen der nginx-Konfiguration, wie weiter unten beschrieben, wurde es schon besser. Komplett hat dies das Problem allerdings noch immer nicht gelöst und viele große Hoster sowie Parallels stehen noch vor diesem Problem. Nun haben wir das Problem lösen können.

Was ist das? 502 Bad Gateway?

Der HTTP Statuscode 502 bedeutet, dass ein Server in einer Kette nicht antwortet oder eine nicht interpretierbare Antwort liefert.

Beim Einsatz von Plesk 12 kommen zwei Webserver zum Einsatz. Einerseits der bekannte Apache 2 Webserver der etwas langsamer ist, dafür aber .htaccess-Dateien verarbeiten kann, andererseits der nginx, der keine .htaccess-Dateien lesen kann und mitunter deshalb schneller ist. Bei Plesk 12 und höheren Versionen wird der nginx-Webserver zur Ausgabe von statischen Dateien (css, js, usw.) verwendet.

Seit des großen Booms des nginx-Servers im Jahr 2014 und der immer größeren Verbreitung von Parallels Plesk als Webserver-Management-Software sieht man den Gateway-Error immer öfter im Internet – mehr als nervig.

Logfiles

Als allererstes prüfen wir die Logfiles die sich in /var/www/vhosts/kunde/logs/ befinden.

Wichtig sind

  • error_log (von Apache 2)
  • proxy_error_log (von nginx)

Nginx Error Log

Viele bekommen folgende Fehler:

  • recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 123.123.123.123, server: , request: „POST <some url>
  • connect() failed (111: Connection refused) while connecting to upstream, client: 213.33.58.2, server: xxx.com, request: „GET /favicon.ico HTTP/1.1“, upstream: „http://<IP>:7080/favicon.ico“, host: „<somehost>“
  • upstream timed out (110: Connection timed out) while reading response header from upstream, client: 94.102.220.87, server:<somehost>, request: „GET / HTTP/1.0“, upstream: „http://<IP>:7080/“, host: „<somehost>“

Diese Fehler lassen sich mit folgender Methode jedenfalls beheben.

Nginx Konfiguration

Die Haupt-Config-Dateien von nginx befindet sich bei Plesk 12 unter

  • /etc/nginx/nginx.conf
  • /etc/sw-cp-server/config

Fügen Sie folgende Einträge in /etc/sw-cp-server/config im http-Block hinzu:

http {

fastcgi_buffers 32 32k;
fastcgi_buffer_size 64k;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;

}

502 Bad Gateway provozieren

Mit folgender Aufgabe konnten wir den Bad Gateway Error zuverlässig nachstellen und testen.

  1. Magento Theme hochladen
  2. Magento Theme aktivieren
  3. Statische Blöcke importieren – nach dem Importvorgang kommt die Fehlermeldung „Error 502 Bad Gateway – nginx“ auf jeder Website die über Parallels Plesk verwaltet wird bzw. die über den Webserver bedient wird.
  4. CMS Pages importieren – sofort erscheint „Error 502 Bad Gateway – nginx“

502 Bad Gateway Lösung

Sollte der Fehler nach einigen Minuten automatisch verschwinden und ein Neustart der Dienste nginx und apache2 nichts bringen ist folgendes die Lösung. Wir haben die Firewall Fail2Ban nachträglich aktiviert und standardmäßig einen Jail für apache2 und nginx eingerichtet. Durch bestimmte Aufgaben kann es passieren, dass der Server sich selber blockiert und zwar genau solange wie der Jail aktiv ist – Standardmäßig sind das 300 Sekunden. Deaktivieren Sie einfach die Jails wie im folgenden Bild.

502 Bad Gateway Fail2Ban Jail

Apache 2 Konfiguration

Damit unser Server überhaupt PHP Dateien interpretierte haben wir folgende Einstellung in der /etc/apache2/apache2.conf eingestellt:

# tell apache to render php first and then html files
DirectoryIndex index.html index.html index.php index.php5

Server neu starten

Abschließend müssen beide Services nur neu gestartet werden:

  • service apache2 restart
  • service nginx restart

Sei sozial und teile

Über den Autor Andreas Grundner

Ich bin Wordpress, Joomla, Typo3 Integrator, Unix Rootserver Administrator und Webanwendungsprogrammierer. Mittlerweile habe ich über 70 Webprojekte weitgehend selbstständig mit enger Kundenabsprache realisiert. Ich bin auf One Page Websites auf Wordpress-Basis spezialisiert, biete aber auch Suchmaschinenoptimierung (SEO), Blogs, Facebook, Youtube und Google+ Seiten an. Meine Verpflichtung gilt dem Datenschutz, meine Leidenschaft dem Finden und Aufzeigen von Sicherheitslücken in Webanwendungen.

8 Reaktionen zu 502 Bad Gateway bei Plesk

  1. Jan Schumacher
    24.08.2017 at 07:51 · Antworten

    Plesk hat die Standardeinstellungen in den aktuellen Versionen dahingehend schon geändert. Die /etc/nginx/nginx.conf müsste aber weiter optimiert werden, vor allem in Bezug auf die Komprimierung.

    Der obere Absatz könnte etwas erweitert werden. Es liest sich so, als wäre der einzige Unterschied zwischen apache und nginx die Unterstützung von .htaccess Dateien zu denen es im Plesk aber auch einen converter gibt.

  2. Filmes
    09.06.2017 at 03:02 · Antworten

    nice website man, thanks for information ! Nach 5h Rekonfiguration und Untersuchung des Servers mit diversen anderen Methoden habe ich per Zufall diesen Hinweis gefunden und siehe da. Unser Server hatte seine eigene IP gesperrt, ohne einen Hinweis darauf.

  3. Stephan
    03.02.2017 at 22:01 · Antworten

    Ich habe jetzt Stunden damit verbracht herauszufinden, wieso alle Seiten unserer Kunden einen 502er bekommen.
    Durch Zufall und als ich schon für heute Feierabend machen wollte, habe ich diesen Beitrag entdeckt.

    Das Problem war, dass Plesk aus irgendeinem Grund, die eigene IP-Adresse gesperrt hat.

    Tausend Dank!!!, Du hast mir das Wochende gerettet 😉

    Gruß Stephan

  4. Markus
    20.11.2016 at 17:39 · Antworten

    Danke für den Artikel.

    Die Änderung der Werte in der /etc/sw-cp-server/config war die Lösung.

    Freundliche Grüsse
    Markus

  5. Jonas
    26.06.2016 at 21:00 · Antworten

    Vielen Dank für diesen Hinwei – auch bei mir war aus irgendeinem Grund die Server-IP in den gesperrten IPs gelandet. Zu den vertrauenswürdigen IPs hinzugefügt – und das Problem ist behoben. Die IPv6-IP war interessanterweise bei den vertrauenswürdigen bereits vorhanden.

  6. Tobias
    17.03.2016 at 20:27 · Antworten

    Danke, hat mir ein wenig weitergeholfen. Bei mir hat Fail2Ban bzw ModSecurity bei Plesk einfach mal die Serverip in ein Jail gesteckt… Dadurch hatte ich wenn ich nginx laufen hatte nen 502 Error. Zu Vertrauenswürdigen IP’s hinzugefügt und voila Seiten sind wieder aufrufbar auch mit nginx davor geschaltet. Plesk ist schon manchmal komisch

  7. Marvin
    24.11.2015 at 14:04 · Antworten

    Vielen Vielen Dank.
    Nach 5h Rekonfiguration und Untersuchung des Servers mit diversen anderen Methoden habe ich per Zufall diesen Hinweis gefunden und siehe da. Unser Server hatte seine eigene IP gesperrt, ohne einen Hinweis darauf.

    Danke Danke Danke.

  8. Benjamin Markus
    05.03.2015 at 10:09 · Antworten

    Vielen Dank für diesen Beitrag, Herr Grundner! Hat mir sehr weiter geholfen.

    Beste Grüße,
    Benjamin

Meinung sagen

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