NGINX dalam hal ini hanya bekerja sebagai reverse proxy dan merender file statis, bukan file dinamis , ia menerima permintaan dan memproksinya ke server aplikasi, yaitu UWSGI.
Server UWSGI bertanggung jawab untuk memuat aplikasi Flask Anda menggunakan antarmuka WSGI. Anda sebenarnya dapat membuat UWSGI mendengarkan langsung permintaan dari internet dan menghapus NGINX jika Anda mau, meskipun sebagian besar digunakan di belakang proxy terbalik.
Dari dokumen :
uWSGI mendukung beberapa metode integrasi dengan server web. Ia juga mampu melayani permintaan HTTP dengan sendirinya.
WSGI hanyalah spesifikasi antarmuka, dalam istilah sederhana, ini memberi tahu Anda metode apa yang harus diterapkan untuk meneruskan permintaan dan tanggapan antara server dan aplikasi. Saat menggunakan kerangka kerja seperti Flask atau Django, ini ditangani oleh kerangka itu sendiri.
Dengan kata lain, WSGI pada dasarnya adalah kontrak antara aplikasi python (Flask, Django, dll) dan server web (UWSGI, Gunicorn, dll). Manfaatnya adalah Anda dapat mengubah server web dengan sedikit usaha karena Anda tahu bahwa server tersebut sesuai dengan spesifikasi WSGI, yang sebenarnya merupakan salah satu tujuan, sebagaimana dinyatakan dalam PEP-333 .
Python saat ini menawarkan berbagai macam kerangka aplikasi web, seperti Zope, Quixote, Webware, SkunkWeb, PSO, dan Twisted Web - untuk menyebutkan beberapa di antaranya 1 . Berbagai macam pilihan ini dapat menjadi masalah bagi pengguna Python baru, karena secara umum, pilihan kerangka kerja web mereka akan membatasi pilihan server web yang dapat digunakan, dan sebaliknya.