it-swarm.com.de

Nginx 502 Ungültiges Gateway für Shared Hosting

Ich habe eine Website bei einem Shared Hosting-Anbieter. Von Anfang an haben meine Besucher zufällig verschiedene Arten von Fehlern erhalten, darunter 502 Bad Gateway / nginx (leere Seite mit dem Fehlertext). Ich habe den Support mehrmals kontaktiert und am Ende wird immer behauptet, der Fehler liege in meinen PHP Skripten. Ich sehe keine Fehler in PHP Protokollen und mein Code funktioniert einwandfrei auf meinen Heimservern.

Andere Arten von Fehlern, die ich gesehen habe:

open_basedir restriction in effect. File(A PHP FILE ON MY SITE) is not
within the allowed path(s): (/home/u514320864:/tmp:/var/tmp:/opt/php-5.3/pear) in ...

Erstens ist der Benutzer u514320864 nicht mein Benutzername. Diese Zeichenfolge wird in meinem Code nirgendwo angezeigt. Mein Home-Verzeichnis befindet sich zufällig nicht innerhalb der zulässigen Pfade, bis ich die Seite aktualisiere und die Dinge wieder funktionieren.

Dann habe ich auch eine leere Seite mit der Meldung No input file specified. gesehen. Das wars, nichts in den Fehlerprotokollen.

Ich habe die letzten beiden Fehler ziemlich selten gesehen (wie ein Dutzend Mal), aber der erste (502) ist ein Schmerz im Arsch. An "schlechten Tagen" erscheint es auf jeder zehnten Seitenanfrage oder so. Mit einer Seitenaktualisierung kehrt es jedoch immer zum Normalzustand zurück.

Ich entwickle mobile Apps, und der Fehler 502 macht unsere Android Apps manchmal fast unbrauchbar (jede Benutzeraktion erfordert eine gewisse Kommunikation zwischen der App und der Serverseite).

Kann ich irgendetwas tun? Ich habe einen SSH-Zugriff auf den Host-Server mit sehr eingeschränkten Berechtigungen. Ich habe die DNS-Einstellungen überprüft und sie scheinen korrekt zu sein.

4
Aleksiv95

Anhand der Fehlermeldung alleine würde ich vorschlagen, sicherzustellen, dass sich alle Dateien in Ihrer App in dem Ordner befinden, in dem Sie Daten ablegen dürfen. Verwenden Sie dann, wenn möglich, absolute Pfade, wenn Sie auf Dateien verweisen.

Angenommen, Ihr Site-Layout lautet wie folgt:

In your document root folder you have
   Folder named Scripts, and a script named index.php

In the Scripts folder you have 
   File named 123.php that represents the script you want to load

Wenn in diesem Setup jemand nur auf Ihren Domainnamen zugreift, lädt die wahrscheinlich index.php den Inhalt. Diese Datei kann den folgenden Inhalt enthalten:

<?php
include "Scripts/123.php";
// rest of startup code goes here
?>

Wenn Sie können, erhalten Sie die vollständigen Pfadinformationen zu Ihrem Dokumentenstamm (ich gehe davon aus, dass der Pfad /path/to/document/root ist), dann erstellen Sie Ihre Index-PHP-Datei wie folgt:

<?php
include "/path/to/document/root/Scripts/123.php";
// rest of startup code goes here
?>

Auf diese Weise wissen Sie, dass Sie mindestens auf die richtige Datei verweisen. Wenn Sie zu Ihrem Dokumentenstamm in ssh gehen und pwd eingeben und die Eingabetaste drücken, erhalten Sie den absoluten Pfad zu Ihrem Dokumentenstamm.

Wenn Sie nur einen Dateinamen ohne Ordnerinformationen angeben, durchsucht PHP alle vordefinierten Include-Ordner (aus der PHP-Konfigurationsdatei) (auch "zulässige Pfade" genannt) nach Ihrem Skript, und einige dieser Ordner befinden sich wahrscheinlich außerhalb Ihres Benutzerraum.

Es ist möglich, dass das fehlerhafte Gateway zurückgegeben wird, wenn die angeforderte Datei mit einem ungewöhnlichen oder undefinierten Protokoll beginnt (z. B. xx: //).

Ich empfehle, Dateien und absolute Pfadnamen zu verwenden, wenn Sie innerhalb von Skripten auf andere Dateien verweisen.

1
Mike