Dalam kasus saya, saya tidak sabar dan akhirnya salah menafsirkan log.
Faktanya, masalah sebenarnya adalah komunikasi antara nginx dan uwsgi, dan bukan antara browser dan nginx. Jika saya telah memuat situs di browser saya dan telah menunggu cukup lama, saya akan mendapatkan "504 - Bad Gateway". Tapi butuh waktu lama, saya terus mencoba berbagai hal, dan kemudian menyegarkan di browser. Jadi saya tidak pernah menunggu cukup lama untuk melihat error 504. Saat menyegarkan di browser, saat itulah permintaan sebelumnya ditutup, dan Nginx menulisnya di log sebagai 499.
Elaborasi
Di sini saya akan berasumsi bahwa pembaca tahu sedikit seperti yang saya lakukan ketika saya mulai bermain-main.
Setup saya adalah reverse proxy, server nginx, dan server aplikasi, server uWSGI di belakangnya. Semua permintaan dari klien akan masuk ke server nginx, kemudian diteruskan ke server uWSGI, dan kemudian tanggapan dikirim kembali dengan cara yang sama. Saya pikir ini adalah cara setiap orang menggunakan nginx / uwsgi dan seharusnya menggunakannya.
Nginx saya berfungsi sebagaimana mestinya, tetapi ada yang salah dengan server uwsgi. Ada dua cara (mungkin lebih) di mana server uwsgi dapat gagal merespons ke server nginx.
1) uWSGI berkata, "Saya sedang memproses, tunggu saja dan Anda akan segera mendapatkan tanggapan". nginx memiliki jangka waktu tertentu, yaitu mau menunggu, fx 20 detik. Setelah itu, ini akan merespons klien, dengan kesalahan 504.
2) uWSGI mati, atau uWSGi mati saat nginx menunggunya. nginx langsung melihatnya dan dalam hal ini, ia mengembalikan kesalahan 499.
Saya menguji penyiapan saya dengan membuat permintaan di klien (browser). Di browser tidak ada yang terjadi, itu terus menggantung. Setelah mungkin 10 detik (kurang dari batas waktu) saya menyimpulkan bahwa ada sesuatu yang tidak benar (yang benar), dan menutup server uWSGI dari baris perintah. Kemudian saya akan pergi ke pengaturan uWSGI, mencoba sesuatu yang baru, dan kemudian restart server uWSGI. Saat saya menutup server uWSGI, server nginx akan mengembalikan kesalahan 499.
Jadi saya terus debugging dengan 499 erroe, yang berarti googling untuk error 499. Tetapi jika saya menunggu cukup lama, saya akan mendapatkan error 504. Jika saya mendapatkan kesalahan 504, saya akan dapat memahami masalah dengan lebih baik, dan kemudian dapat melakukan debug.
Jadi kesimpulannya adalah, bahwa masalahnya adalah uWGSI yang terus menggantung ("Tunggu sebentar lagi, sebentar lagi, saya akan punya jawaban untuk Anda ...").
Bagaimana saya tetap bahwa masalah, saya tidak ingat. Saya rasa itu bisa disebabkan oleh banyak hal.