Von Apache zurückgegebener HTTP-Statuscode, konfiguriert als Proxy mit der Direktive „proxytimeout“

Von Apache zurückgegebener HTTP-Statuscode, konfiguriert als Proxy mit der Direktive „proxytimeout“

Ich habe eine allgemeine Frage zum Verhalten des Apache-Webservers, der als Proxyserver konfiguriert ist und über eine Direktive verfügtProxyTimeoutzu Testzwecken auf 1 Sekunde eingestellt.

Mein Backend-Server (Upsteam) ist ein in Python integrierter HTTP-Server, der absichtlich länger als 1 Sekunde wartet, um die Antwort an den Proxyserver (oben erwähnter Apache) zu senden, und sie 3 Sekunden nach Erhalt der Anfrage sendet.

Laut der offiziellen Apache-Dokumentation (https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxytimeout)

Der Proxy soll für die inProxyTimeoutDirektive und wenn es keine Antwort gibt, muss es „ein Timeout zurückgeben“, was, soweit ich es verstehe, ein Statuscode 504 ist, weil die Spezifikation dieses Statuscodes besagt:
504 Gateway Timeout - Der Server fungierte als Gateway oder Proxy und erhielt keine rechtzeitige Antwort vom Upstream-Server.

Wenn ich dennoch Anfragen an den Proxyserver sende, gibt dieser den Fehlercode 502 zurück, was darauf hinweist, dass der Proxy eine ungültige Antwort vom Upstream-Server erhält.

Ich versuche also zu verstehen, warum das passiert. Warum lautet der Statuscode 502 statt 504, wenn der Upstream-Server in Ordnung ist, er kann dem Server nur wegen eines abgelaufenen Timeouts nicht antworten?

Die Fehlerprotokolle von Apache informieren korrekt:

[proxy_http:error] [pid 6040] (70007)The timeout specified has expired: [client 192.168.56.1:53331] AH01102: error reading status line from remote server 127.0.0.1:8080"

Der Upstream-Backend-Server wirft einen BrokenPipeError aus, den ich in einer Ausnahme abfange, und lässt ihn nicht abstürzen. Meines Wissens nach sollte es also kein Fehler des Servers sein, sondern eher das erwartete Verhalten, da die Verbindung nach 1 Sekunde geschlossen wird und es keinen Ort gibt, an den sie gesendet werden kann.

Vielleicht kann mir jemand helfen zu verstehen, was die Ursache für dieses Verhalten sein könnte und warumProxyTimeoutführt nicht dazu, dass Apache 504 zurückgibt, was gemäß der Dokumentation logisch ist?

Dank im Voraus!

verwandte Informationen