
В процессе моего вопроса здесьПроизводственный сервер намного медленнее локального тестового сервера при отправке больших запросовЯ пытаюсь глубже понять, что на самом деле делает веб-сервер, особенно nginx. По сути, я хочу лучше понять архитектуру, которую я долгое время принимал как должное. Может, это и тривиально, но, пожалуйста, выслушайте меня...
Я запускаю приложение django с nginx и gunicorn и отправляю post-запросы на сервер. Поскольку я пытаюсь понять, где у меня проблемы с производительностью, я хочу подробно разобраться, как обрабатываются мои запросы.
Итак, я отправляю POST-запрос через библиотеку requests
. Насколько я понимаю, все данные, отправляемые в интернет, используют -протокол HTTP
, поэтому в основном отправляемые мной данные передаются в текстовом формате. Правильно? Нет никакой интерпретации кода объектов/структур данных Python вообще? То есть размер запроса, достигающего nginx, — это только размер запроса, преобразованного в текстовый формат?
Насколько я понимаю, nginx теперь получает этот запрос в текстовом формате, а затем решает, что с ним делать... Он пересылает этот запрос моему веб-приложению (django) (или, может быть, лучше: моему внутреннему серверу), где выполняется мой код и где данные записываются в базу данных.
Так nginx просто пересылает запрос и всё? Или он делает что-то ещё?
Затем код или база данных выдают ошибку или возвращают nginx сообщение об успешном выполнении, которое nginx возвращает в качестве выходных данных сервера (например, 404, 405, 201 или какой-либо другой код...).
Итак, мой вопрос: как nginx обрабатывает эти запросы API и как они интерпретируются?
решение1
nginx просто пересылает запрос на ваш бэкенд-сервер. Он не выполняет никаких дополнительных операций с данными, кроме сжатия, если это согласовано с клиентом.
В 99% случаев в nginx нет ничего, что могло бы существенно повлиять на производительность. Анализировать на предмет проблем с производительностью нужно само приложение.