Dile a Flask que está detrás de un proxy

Cuando se utiliza un proxy inverso, o muchas plataformas de alojamiento de Python, el proxy interceptará y reenviará todas las peticiones externas al servidor WSGI local.

Desde el punto de vista del servidor WSGI y de la aplicación Flask, las peticiones vienen ahora del servidor HTTP a la dirección local, en lugar de la dirección remota a la dirección del servidor externo.

Los servidores HTTP deben establecer cabeceras X-Forwarded- para pasar los valores reales a la aplicación. La aplicación puede entonces ser indicada para confiar y usar esos valores envolviéndola con el middleware X-Forwarded-For Proxy Fix proporcionado por Werkzeug.

Este middleware sólo debe utilizarse si la aplicación está realmente detrás de un proxy, y debe configurarse con el número de proxies que se encadenan delante de él. No todos los proxies establecen todas las cabeceras. Dado que las cabeceras entrantes pueden ser falsificadas, debes establecer cuántos proxies establecen cada cabecera para que el middleware sepa en qué confiar.

from werkzeug.middleware.proxy_fix import ProxyFix

app.wsgi_app = ProxyFix(
    app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1
)

Recuerde, sólo aplique este middleware si está detrás de un proxy, y establezca el número correcto de proxies que establecen cada cabecera. Puede ser un problema de seguridad si te equivocas en esta configuración.