Wir haben einen Anwendungsserver, der manchmal hängt. Wir vermuten, dass dies auf eine schlechte Anfrage eines Kunden zurückzuführen ist.
Kann nginx die gesamte Anfrage / Antwort (wie Fiddler-Captures) in Dateien protokollieren, damit wir die Anfragen sehen können, die vor dem Hang gesendet wurden?
(Wir müssen wahrscheinlich pcap und diesen Ansatz vermeiden und alles in nginx machen)
Wenn nginx nicht das richtige Werkzeug dafür ist, was (außer einem Netzwerkanalysator) könnte es sein?
Antworten:
Um den von Besuchern gesendeten Anforderungshauptteil abzurufen, verwenden Sie
client_body_in_file_only on;
die "temporäre" Datei, in die sie geschrieben wurde, und protokollieren Sie sie, indem Sie var$request_body_file
an das Protokollformat anhängen . "Temporäre" Dateien befinden sich standardmäßig im Verzeichnis client_temp.Sie können auch Anforderungsheader protokollieren
$http_<header>
und Header mit versenden$sent_http_<header>
.Wenn Sie einen Anfragetext und Kopfzeilen haben, sollten Sie ihn wiedergeben und die Antwort Ihres Besuchers erhalten können.
So etwas wie auch gären sollte sehr in Betracht gezogen werden , so dass Sie den Verkehr auf einer anderen Umgebung wiedergeben könnten , wo Sie diese temporären Dateien , ohne dass IO Probleme in der Produktion nginx schreiben lassen können (nginx sie nicht mit bereinigen wird
on
Wert, ist , warum es nicht , dass „temporäre“ in diesem Fall).quelle
client_body_in_file_only
und$http_<header>
gebraucht würden. Ich verstehe das jetzt.mitmproxy scheint das richtige Werkzeug zu sein, um das zu tun, wonach Sie fragen.
Im Reverse-Proxy-Modus können Sie die Anforderung und die Antwort genau wie bei Fiddler erfassen.
quelle