Apache httpd

Apache httpd es un servidor HTTP rápido y de nivel de producción. Cuando sirva su 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.

httpd puede instalarse utilizando el gestor de paquetes de su sistema, o un ejecutable preconstruido para Windows. La instalación y ejecución de httpd en sí está fuera del alcance de este documento. Esta página describe los aspectos básicos de la configuración de httpd 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 httpd se encuentra en /etc/httpd/conf/httpd.conf en Linux. Puede ser diferente dependiendo de su sistema operativo. Consulta la documentación y busca httpd.conf.

Elimine o comente cualquier directiva existente DocumentRoot. Añade las líneas de configuración de abajo. Asumiremos que el servidor WSGI está escuchando localmente en http://127.0.0.1:8000.

/etc/httpd/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyPass / http://127.0.0.1:8000/
RequestHeader set X-Forwarded-Proto http
RequestHeader set X-Forwarded-Prefix /

Es posible que las líneas LoadModule ya existan. Si es así, asegúrese de descomentarlas en lugar de añadirlas manualmente.

Entonces Dile a Flask que está detrás de un proxy para que tu aplicación utilice las cabeceras X-Forwarded. Las cabeceras X-Forwarded-For y X-Forwarded-Host se establecen automáticamente con ProxyPass.