nginx

nginx es un servidor HTTP rápido y de nivel de producción. Cuando sirvas tu aplicación con uno de los servidores WSGI listados en Despliegue en producción, a menudo es bueno o necesario poner un servidor HTTP dedicado delante de él. Este «proxy inverso» puede manejar las peticiones entrantes, TLS, y otros problemas de seguridad y rendimiento mejor que el servidor WSGI.

Nginx se puede instalar utilizando el gestor de paquetes de su sistema, o un ejecutable pre-construido para Windows. La instalación y ejecución de Nginx está fuera del alcance de este documento. Esta página describe los fundamentos de la configuración de Nginx para el proxy de su aplicación. Asegúrese de leer su documentación para entender qué características están disponibles.

Nombre de dominio

La adquisición y configuración de un nombre de dominio está fuera del alcance de este documento. En general, usted comprará un nombre de dominio de un registrador, pagará por el espacio del servidor con un proveedor de alojamiento, y luego apuntará su registrador a los servidores de nombres del proveedor de alojamiento.

Para simular esto, también puedes editar tu archivo hosts, ubicado en /etc/hosts en Linux. Añade una línea que asocie un nombre con la IP local.

Los sistemas Linux modernos pueden estar configurados para tratar cualquier nombre de dominio que termine en .localhost de esta manera sin añadirlo al archivo hosts.

/etc/hosts
127.0.0.1 hello.localhost

Configuración

La configuración de nginx se encuentra en /etc/nginx/nginx.conf en Linux. Puede ser diferente dependiendo de tu sistema operativo. Consulta la documentación y busca nginx.conf.

Elimina o comenta cualquier sección existente de server. Añade una sección server y utiliza la directiva proxy_pass para apuntar a la dirección en la que el servidor WSGI está escuchando. Asumiremos que el servidor WSGI está escuchando localmente en http://127.0.0.1:8000.

/etc/nginx.conf
server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:8000/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Prefix /;
    }
}

Entonces Dile a Flask que está detrás de un proxy para que su aplicación utilice estas cabeceras.