No meu caso, fiquei impaciente e acabei interpretando mal o log.
Na verdade, o verdadeiro problema era a comunicação entre o nginx e o uwsgi, e não entre o navegador e o nginx. Se eu tivesse carregado o site no meu navegador e tivesse esperado o suficiente, teria obtido um "504 - Bad Gateway". Mas demorou tanto, que continuei tentando algumas coisas, e depois atualizei no navegador. Portanto, nunca esperei o suficiente para ver o erro 504. Ao atualizar no navegador, é quando a solicitação anterior é fechada e o Nginx grava isso no log como 499.
Elaboração
Aqui, assumirei que o leitor sabe tão pouco quanto eu sabia quando comecei a brincar.
Minha configuração foi um proxy reverso, o servidor nginx, e um servidor de aplicativos, o servidor uWSGI por trás dele. Todas as solicitações do cliente iriam para o servidor nginx, depois seriam encaminhadas para o servidor uWSGI e a resposta seria enviada da mesma forma. Eu acho que é assim que todo mundo usa nginx / uwsgi e deve usá-lo.
Meu nginx funcionou como deveria, mas algo estava errado com o servidor uwsgi. Existem duas maneiras (talvez mais) em que o servidor uwsgi pode falhar ao responder ao servidor nginx.
1) uWSGI diz: "Estou processando, espere e você receberá uma resposta em breve". O nginx tem um certo período de tempo, que está disposto a esperar, fx 20 segundos. Depois disso, ele responderá ao cliente, com um erro 504.
2) uWSGI está morto, ou uWSGi morre enquanto o nginx está esperando por ele. O nginx vê isso imediatamente e, nesse caso, retorna um erro 499.
Estava testando minha configuração fazendo solicitações no cliente (navegador). No navegador não aconteceu nada, apenas continuou travando. Depois de talvez 10 segundos (menos que o tempo limite), concluí que algo não estava certo (o que era verdade) e fechei o servidor uWSGI da linha de comando. Em seguida, iria para as configurações do uWSGI, tentaria algo novo e, em seguida, reiniciaria o servidor uWSGI. No momento em que fechei o servidor uWSGI, o servidor nginx retornaria um erro 499.
Continuei depurando com o erro 499, o que significa pesquisar no Google pelo erro 499. Mas se eu tivesse esperado o suficiente, teria obtido o erro 504. Se eu tivesse obtido o erro 504, teria sido capaz de entender o problema melhor e, então, ser capaz de depurar.
Portanto, a conclusão é que o problema era com o uWGSI, que ficava pendurado ("Espere um pouco mais, só mais um pouco, então terei uma resposta para você ...").
Não me lembro como resolvi esse problema. Acho que pode ser causado por muitas coisas.