Nel mio caso, ero impaziente e ho finito per interpretare male il registro.
In effetti, il vero problema era la comunicazione tra nginx e uwsgi, e non tra il browser e nginx. Se avessi caricato il sito nel browser e avessi aspettato abbastanza a lungo avrei ottenuto un "504 - Bad Gateway". Ma ci è voluto così tanto tempo, che ho continuato a provare cose e poi aggiornare nel browser. Quindi non ho mai aspettato abbastanza a lungo per vedere l'errore 504. Quando si aggiorna nel browser, cioè quando la richiesta precedente viene chiusa e Nginx la scrive nel registro come 499.
Elaborazione
Qui presumo che il lettore sappia così poco come ho fatto io quando ho iniziato a giocare.
La mia configurazione era un proxy inverso, il server nginx e un server applicazioni, il server uWSGI dietro di esso. Tutte le richieste dal client andavano al server nginx, quindi inoltrate al server uWSGI, e quindi la risposta veniva inviata allo stesso modo. Penso che questo sia il modo in cui tutti usano nginx / uwsgi e dovrebbero usarlo.
Il mio nginx ha funzionato come dovrebbe, ma qualcosa non andava con il server uwsgi. Ci sono due modi (forse più) in cui il server uwsgi può non rispondere al server nginx.
1) uWSGI dice "Sto elaborando, aspetta e riceverai presto una risposta". nginx ha un certo periodo di tempo, che è disposto ad aspettare, fx 20 secondi. Dopodiché, risponderà al client, con un errore 504.
2) uWSGI è morto o uWSGi muore mentre nginx lo sta aspettando. nginx lo vede subito e in tal caso restituisce un errore 499.
Stavo testando la mia configurazione effettuando richieste nel client (browser). Nel browser non è successo nulla, è rimasto bloccato. Dopo forse 10 secondi (meno del timeout) ho concluso che qualcosa non andava (il che era vero) e ho chiuso il server uWSGI dalla riga di comando. Quindi andrei alle impostazioni di uWSGI, proverei qualcosa di nuovo, e poi riavvierei il server uWSGI. Nel momento in cui ho chiuso il server uWSGI, il server nginx restituiva un errore 499.
Quindi ho continuato a eseguire il debug con 499 erroe, il che significa cercare su Google l'errore 499. Ma se avessi aspettato abbastanza a lungo, avrei ricevuto l'errore 504. Se avessi ricevuto l'errore 504, sarei stato in grado di comprendere meglio il problema e quindi di eseguire il debug.
Quindi la conclusione è che il problema era con uWGSI, che continuava a rimanere sospeso ("Aspetta ancora un po ', solo un po' di più, poi avrò una risposta per te ...").
Come mi fisso che problema, non mi ricordo. Immagino che potrebbe essere causato da molte cose.