Conectar NGINX con uWSGI por proxy reverso
Clase 15 de 22 • Curso de Despliegue de Aplicaciones Python en la Nube
Contenido del curso
Configuración de Servidores en la Nube para Despliegue
- 6

Cómo elegir recursos de servidor en AWS
03:33 min - 7

Cómo crear cuenta AWS con free tier
07:17 min - 8

Crear una instancia EC2 con Ubuntu en AWS
12:44 min - 9

SSH con llave .pem en Ubuntu AWS
08:41 min - 10

Cómo gestionar Ubuntu con apt y sudo
10:13 min - 11

Cómo DNS convierte tu IP en dominio memorable
13:55 min - 12

Cómo instalar certificados SSL con Certbot
05:16 min
Administración y Optimización de Servidores para Producción
- 13

Cómo clonar Django en servidor con SSH y Deploy Keys
14:41 min - 14

Configurar uWSGI como servicio para Django
14:34 min - 15

Conectar NGINX con uWSGI por proxy reverso
Viendo ahora - 16

Logs específicos por aplicación en Python
11:49 min - 17

Cómo configurar Sentry en Django
08:54 min - 18

Variables de entorno Django en servidor
04:28 min
Integración de Servicios Complementarios para Aplicaciones Python
Automatización y CI/CD para Despliegues Python
Servir una aplicación de Python en producción requiere unir NGINX, uWSGI y un socket Unix mediante un proxy reverso. Aquí verás cómo editar la configuración, validar cambios con nginx -t y reiniciar el servicio para que el dominio responda correctamente, además de una recomendación para crear un endpoint de estado que ayude a detectar fallos antes de un error 500.
¿Cómo conectar NGINX, uWSGI y el socket con un proxy reverso?
Para exponer la aplicación, uWSGI genera un archivo de socket que otro servicio usará para mostrarla en el navegador. El proxy reverso de NGINX se conecta directamente a ese socket y redirige las solicitudes de la URL (por ejemplo, la ruta deployment with Python) hacia uWSGI. Así, el tráfico HTTP llega a NGINX y este lo pasa al backend por el protocolo Unix del socket.
¿Qué es un proxy reverso en NGINX?
- Un intermediario que recibe requests HTTP y los reenvía a uWSGI.
- Se conecta al socket local en lugar de un puerto TCP.
- Simplifica el despliegue de apps Python con uWSGI.
¿Por qué usar un socket Unix con uWSGI?
- Comunicación local eficiente y segura entre NGINX y uWSGI.
- Menos exposición que abrir puertos públicos.
- Requiere especificar la ruta exacta en
/tmpy cerrar con punto y coma.
¿Qué riesgos operativos considerar?
- Hay dos procesos críticos: NGINX y uWSGI. Si alguno falla, puede aparecer un error 500.
- Un endpoint de estado en NGINX ayuda a validar rápidamente si el servicio frontal responde.
¿Qué pasos seguir para editar y validar la configuración de NGINX?
El flujo práctico es directo: entrar a la terminal, abrir el archivo de configuración en /etc/nginx, incluir los parámetros de uWSGI y apuntar al socket. Luego, validar y reiniciar NGINX para aplicar los cambios.
¿Cómo editar el archivo en /etc/nginx?
- Cerrar procesos de monitoreo como
htopantes de editar. - Navegar a
/etc/nginxy revisarsites-availableysites-enabledconls. - Abrir el archivo del sitio con privilegios de superusuario:
sudo vim. - Eliminar líneas temporales con
dden Vim. - Agregar las directivas para uWSGI dentro del
locationcorrespondiente:
include uwsgi_params;
uwsgi_pass unix:/tmp/nombre-del-socket.sock;
- Guardar y salir en Vim con
:wq.
¿Cómo validar la sintaxis y reiniciar NGINX?
- Probar la configuración antes de recargar servicios:
nginx -t
- Si la sintaxis está OK y la prueba es exitosa, reiniciar solo NGINX:
sudo service nginx restart
- Recargar el navegador y comprobar que ahora la aplicación se muestra correctamente en el dominio.
¿Qué habilidades y comandos se ponen en práctica?
- Edición segura con
sudo vimy borrado de líneas condd. - Navegación de rutas del sistema:
/etc/nginx,/tmp. - Revisión de sitios en
sites-availableysites-enabled. - Inclusión de
uwsgi_paramsy definición deuwsgi_passcon protocolo Unix. - Validación con
nginx -ty reinicio consudo service nginx restart. - Buenas prácticas: copiar y pegar la ruta del socket desde
/tmppara evitar errores de tipado.
¿Cómo verificar el estado y prevenir errores 500?
Crear una nueva configuración de location para el estado en NGINX permite comprobar rápidamente si el frontal responde. Con dos procesos corriendo (NGINX y uWSGI), cualquiera puede fallar. Un endpoint de estado ayuda a distinguir si el problema está en NGINX o en uWSGI y reduce el tiempo de diagnóstico ante un HTTP 500.
- Añadir un
locationdedicado a verificación de estado. - Usarlo para confirmar que NGINX está activo incluso si uWSGI cae.
- Probarlo desde la URL del dominio y automatizar verificaciones.
¿Te gustaría que revisemos juntos tu configuración de NGINX y el endpoint de estado? Comparte tu avance y dudas en los comentarios.