NGINX в этом случае работает только как обратный прокси и отображает статические файлы, а не динамические файлы , он получает запросы и передает их серверу приложений, которым будет UWSGI.
Сервер UWSGI отвечает за загрузку вашего приложения Flask с помощью интерфейса WSGI. На самом деле вы можете заставить UWSGI напрямую прослушивать запросы из Интернета и удалять NGINX, если хотите, хотя в основном он используется за обратным прокси.
Из документов :
uWSGI поддерживает несколько методов интеграции с веб-серверами. Он также способен самостоятельно обслуживать HTTP-запросы.
WSGI - это просто спецификация интерфейса, проще говоря, он сообщает вам, какие методы должны быть реализованы для передачи запросов и ответов между сервером и приложением. При использовании таких фреймворков, как Flask или Django, этим занимается сам фреймворк.
Другими словами, WSGI - это в основном контракт между приложениями Python (Flask, Django и т. Д.) И веб-серверами (UWSGI, Gunicorn и т. Д.). Преимущество состоит в том, что вы можете изменять веб-серверы без особых усилий, потому что вы знаете, что они соответствуют спецификации WSGI, что на самом деле является одной из целей, как указано в PEP-333 .
Python в настоящее время имеет широкий спектр рамок веб - приложения, такие как Zope, Кихот, Webware, SkunkWeb, ПСА и Twisted Web - назвать лишь несколько 1 . Такое разнообразие вариантов может стать проблемой для новых пользователей Python, потому что, вообще говоря, их выбор веб-фреймворка будет ограничивать их выбор используемых веб-серверов, и наоборот.