• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

HTTP Statuscode 502

Tronjer

Senior HTML'ler
Ich habe hier ein interessantes Problem. Es geht darum, dass ich mit Firefox 9.01 beim Seitenaufruf von einem unter nginx betriebenem Webserver einen 502 Bad Gateway Error erhalte, während sich die Seiten im IE 9 problemlos laden lassen.

Code:
HTTP/1.1 502 Bad Gateway
Server: nginx/0.7.67
Date: Fri, 30 Dec 2011 23:26:12 GMT
Content-Type: text/html
Content-Length: 173
Connection: keep-alive

Der Fehler ist reproduzierbar, es handelt sich definitiv nicht um ein Cache-Problem, und es erscheint mir unlogisch, dass der eine Browser einen Server Error erzeugt und der andere nicht. Ist das nun ein FF bug, oder gibt es für dieses Phänomen eine andere Erklärung?
 
Alle 5XX Fehler sind Serverfehler und haben nichts aber auch rein gar nichts mit dem Browser oder besser ausgedrückt, mit dem verwendeten Client zu tun.
Durch das Flag

Connection: keep-alive

wird dem Server mitgeteilt, die gleiche Verbindungskennung aufrechtzuerhalten, daher der wiederkehrende Fehler.
Bei Verwendung eines anderen Browsers wird auch eine neue Verbindungskennung gewählt.

Abhilfe schafft hier eine andere Seite auf dem Server anzuwählen. F5 reicht hier nämlich nicht.
 
Ich weiss, dass es sich hier um einen Server-Fehler handelt, und genau deshalb wundert mich das ja auch. Beim FF hilft es genauso wenig, eine andere Seite aufzurufen, wie Str + F5, um den Cache zu clearen. Im IE funktioniert es hingegen klaglos. Google spuckt auch diverse Treffer von Leuten aus, die mit nginx ähnliche Probleme haben, aber keine Erklärung dafür, wie ein Browser einen 502 Error erzeugen kann.
 
Ich kann jetzt nur von meinen Erfahrungen sprechen und zwar mit diesem Forum hier. Da habe ich genau den Fehler, den du angegeben hast. Ich habe aber dann keinen anderen Browser getestet. Habe einfach in der Adresszeile die Hauptseite oder eine andere Seite eingegeben und danach ging es wieder.

Also Cache leeren kann nicht helfen, da die Verbindungskennung gleich bleibt. Man braucht eine neue Verbindungskennung um aus der bestehenden raus zu kommen.
Artikel bei Wikipedia zu Keepalive

Edit: Habe noch mal geschaut was andere für Probleme hatten und es könnte ein Cookie-Problem sein. http://de.wikipedia.org/wiki/KeepaliveCookies löschen soll Abhilfe bringen.
 
Zuletzt bearbeitet von einem Moderator:
Könntest du evtl. den HTTP-Request-Header beider Browser auslesen und hier posten? Darin muss das Problem liegen und der Unterschied wird nur so deutlich.

Unter FF gibt es dazu etwa das Tool Live HTTP Headers.
 
Lässt sich leider nicht mehr nachvollziehen. Ich bin dem Vorschlag von Wustersoss gefolgt und habe die entsprechenden Domain Cookies gelöscht. Nun funktioniert wieder alles.

Genau genommen ging es um das Forum der Piratenpartei. Zu Anfang war es nur der eine oder andere Thread, der auf diese Weise "unleserlich" wurde, im Laufe der Zeit betraf es dann aber immer mehr Topics, und ein Thema, das einmal nicht geladen werden konnte, lieferte auch bei späteren Versuchen immer wieder den 502 Error.

Was mir auffällt, ist der fehlende Timeout für das Keepalive im Request Header. Die Sitzungscookies in diesem Forum haben eine Verfallszeit von 365 Tagen, und ich vermute mal, dass diese Kombination für den Fehler verantwortlich gewesen ist.

So rein aus technischem Interesse, und weil ich mit der Materie noch nicht so vertraut bin, hätte ich dann ein paar Fragen.
- Würde der Fehler auch auftreten, wenn der Timeout des Servers auf kurze Zeit begrenzt wäre?
- Könnte man ein Cookie so programmieren, dass es dem Besucher eine falsche Statusmeldung liefert?
- Warum benutzt überhaupt jemand nginx anstelle von Apache?
 
Im Grunde genommen ist es ja gut, dass bei andere Software(hier neue Version von Firefox) der Server die Cookies nicht akzeptiert, da es eine Sicherheitsmerkmal darstellt. Man muss es nur wissen.

Warum jemand nginx nimmt?
hmmm - Warum nimmt jemand Opera als Browser?
Warum fahren nicht alle Leute Porsche?
Warum kaufen Leute nachgemachte Diamanten?

Das kann man nicht beantworten.

Lies mal nginx

- Könnte man ein Cookie so programmieren, dass es dem Besucher eine falsche Statusmeldung liefert?
Ein Cookie wird nicht programmiert sondern gesetzt. Ein Cookie hat mindestens ein Argument und einen Wert und kann ein Ablaufdatum enthalten.
In PHP wird von der PHP Seite geprüft ob es sich um das richtige Cookie handelt. Der Einsatz macht es dem Anwender sehr einfach, Cookies zu benutzen, da er sich um die Sicherheit nicht kümmern muss. Das erledigt die Software PHP für ihn.
Ähnlich denke ich, verhält es sich bei den anderen Serversprachen, wobei ich sagen muss, dass ich mich da nicht sonderlich auskenne.

Siehe dazu das Manual:
- PHP: Cookies - Manual
- PHP: setcookie - Manual

- Würde der Fehler auch auftreten, wenn der Timeout des Servers auf kurze Zeit begrenzt wäre?
Ja, das hat nichts damit zu tun.
 
Zurück
Oben