Quiero usar gunicorn para una aplicación REST API con Flask/Python. ¿Cuál es el propósito de agregar nginx aquí a gunicorn? El sitio de gunicorn recomienda usar gunicorn con nginx.
Nginx tiene algunas funciones de servidor web (p. ej., servicio de páginas estáticas, manejo de SSL) que gunicorn no tiene, mientras que gunicorn implementa WSGI (que nginx no).
... Espera, ¿por qué necesitamos dos servidores? Piense en Gunicorn como el servidor web de aplicaciones que se ejecutará detrás de nginx, el servidor web frontal. Gunicorn es compatible con WSGI. Puede comunicarse con otras aplicaciones compatibles con WSGI, como Flask o Django.
Fuente: https://realpython.com/blog/python/kickstarting-flask-on-ubuntu-setup-and-deployment/
Nginx es un proxy inverso para Gunicorn. Gunicorn sirve su aplicación Flask y Nginx se sienta frente a ella y decide dónde debe ir una solicitud. Por ejemplo, si la solicitud entrante es una solicitud http, Nginx la redirige a gunicorn, si es para un archivo estático, lo atiende solo. Lea más sobre cómo usar Nginx y Gunicorn y cómo implementarlos a partir deaquí .
Gunicorn es un servidor de aplicaciones para ejecutar su instancia de aplicación de python.
NGINX es un proxy inverso. Acepta conexiones entrantes y decide a dónde deben ir a continuación. Está frente a Gunicorn.