In meinem Fall war ich ungeduldig und habe das Protokoll falsch interpretiert.
Tatsächlich war das eigentliche Problem die Kommunikation zwischen nginx und uwsgi und nicht zwischen dem Browser und nginx. Wenn ich die Site in meinen Browser geladen und lange genug gewartet hätte, hätte ich ein "504 - Bad Gateway" bekommen. Aber es hat so lange gedauert, dass ich immer wieder Dinge ausprobiert und dann im Browser aktualisiert habe. Ich habe also nie lange genug gewartet, um den 504-Fehler zu sehen. Beim Aktualisieren im Browser wird die vorherige Anforderung geschlossen, und Nginx schreibt dies als 499 in das Protokoll.
Ausarbeitung
Hier gehe ich davon aus, dass der Leser so wenig weiß wie ich, als ich anfing herumzuspielen.
Mein Setup war ein Reverse-Proxy, der Nginx-Server, und ein Anwendungsserver, der dahinter stehende uWSGI-Server. Alle Anforderungen vom Client wurden an den Nginx-Server gesendet, dann an den uWSGI-Server weitergeleitet, und die Antwort wurde auf dieselbe Weise zurückgesendet. Ich denke, so benutzt jeder Nginx / Uwsgi und soll es benutzen.
Mein Nginx hat so funktioniert, wie es sollte, aber mit dem uwsgi-Server stimmte etwas nicht. Es gibt zwei Möglichkeiten (möglicherweise mehr), auf die der uwsgi-Server möglicherweise nicht auf den nginx-Server reagiert.
1) uWSGI sagt: "Ich verarbeite, warte nur und du wirst bald eine Antwort erhalten." nginx hat eine bestimmte Zeitspanne, die es zu warten bereit ist, fx 20 Sekunden. Danach antwortet es dem Client mit einem 504-Fehler.
2) uWSGI ist tot oder uWSGi stirbt, während nginx darauf wartet. nginx sieht das sofort und gibt in diesem Fall einen 499-Fehler zurück.
Ich habe mein Setup getestet, indem ich Anfragen im Client (Browser) gestellt habe. Im Browser passierte nichts, es hing einfach weiter. Nach vielleicht 10 Sekunden (weniger als das Timeout) kam ich zu dem Schluss, dass etwas nicht stimmte (was wahr war), und schloss den uWSGI-Server über die Befehlszeile. Dann würde ich zu den uWSGI-Einstellungen gehen, etwas Neues ausprobieren und dann den uWSGI-Server neu starten. In dem Moment, in dem ich den uWSGI-Server geschlossen habe, hat der Nginx-Server einen 499-Fehler zurückgegeben.
Also habe ich weiter mit dem 499-Fehler debuggt, was bedeutet, nach dem 499-Fehler zu googeln. Aber wenn ich lange genug gewartet hätte, hätte ich den 504-Fehler bekommen. Wenn ich den 504-Fehler erhalten hätte, hätte ich das Problem besser verstehen und dann debuggen können.
Die Schlussfolgerung ist also, dass das Problem bei uWGSI lag, das immer wieder hängen blieb ("Warte ein bisschen länger, nur ein bisschen länger, dann werde ich eine Antwort für dich haben ...").
Wie ich dieses Problem behoben habe , weiß ich nicht mehr. Ich denke, es könnte durch viele Dinge verursacht werden.