У моєму випадку я був нетерплячим і закінчився неправильним тлумаченням журналу.
Насправді справжньою проблемою було спілкування між nginx та uwsgi, а не між браузером та nginx. Якби я завантажив сайт у своєму браузері і зачекав досить довго, я отримав би "504 - Bad Gateway". Але це зайняло так багато часу, що я продовжував пробувати речі, а потім оновлювався в браузері. Тому я ніколи не чекав досить довго, щоб побачити помилку 504. При оновленні в браузері, тобто коли попередній запит закритий, і Nginx пише, що в журналі як 499.
Розробка
Тут я припускаю, що читач знає так само мало, як я, коли я почав грати.
У моїй установці був зворотний проксі, сервер nginx та сервер додатків, сервер uWSGI за ним. Усі запити від клієнта переходитимуть до сервера nginx, потім пересилаються на сервер uWSGI, а потім відповідь надсилається тим же шляхом назад. Я думаю, саме так усі використовують nginx / uwsgi і повинні використовувати його.
Мій nginx працював як слід, але з сервером uwsgi щось не було. Є два способи (можливо більше), коли сервер uwsgi не може відповісти на nginx-сервер.
1) uWSGI каже: "Я обробляю, просто зачекайте, і ви незабаром отримаєте відповідь". nginx має певний проміжок часу, який він готовий чекати, fx 20 секунд. Після цього він відповість клієнтові з помилкою 504.
2) uWSGI мертвий, або uWSGi помирає, поки nginx чекає на нього. nginx бачить це відразу, і в цьому випадку він повертає помилку 499.
Я перевіряв налаштування, роблячи запити у клієнта (браузера). У браузері нічого не сталося, він просто продовжував висіти. Через 10 секунд (менше часу очікування) я зробив висновок, що щось не так (що було правдою), і закрив сервер uWSGI з командного рядка. Тоді я б перейшов до налаштувань uWSGI, спробував щось нове, а потім перезапустив сервер uWSGI. Щойно я закрив сервер uWSGI, сервер nginx поверне помилку 499.
Тому я продовжував налагоджувати помилку 499, що означає гуглінг за помилку 499. Але якби я досить довго чекала, я отримала б помилку 504. Якби я отримав помилку 504, я міг би краще зрозуміти проблему, а потім зможу налагоджувати.
Отже, висновок полягає в тому, що проблема була в uWGSI, який продовжував висіти ("Почекайте ще трохи, ще трохи довше, тоді у мене буде відповідь за вас ...").
Як я вирішив цю проблему, я не пам'ятаю. Я думаю, це може бути викликано багатьма речами.