miércoles, 14 de julio de 2021

Evitar contenido HTTP usando NGINX con HTTPS



Cómo evitar mostrar contenido HTTP en una web HTTPS a través de NGINX.



Al pasar un dominio, digamos dominio.com, a través de NGINX actuando como proxy inverso, me encontré que algunos JavaScript no cargaban, por lo que la web funcionaba a medias.

Tras mucho rato tratando de averiguar por qué no cargaban los JavaScript, me di cuenta de lo siguiente:

1) Hacía un redirect HTTP a HTTPS en NGINX.

2) La web cargaba recursos en HTTP en su código fuente que a su vez trataban de ir a HTTPS debido mi configuración de NGINX, y, al estar en el código fuente, este redirect no funcionaba.

Tras dar muchas vueltas y probar sin éxito cosas como:

proxy_set_header X-Forwarded-Proto https;

acabé usando el siguiente header dentro del location del dominio en NGINX:

add_header 'Content-Security-Policy' 'upgrade-insecure-requests';

Esta directiva indica al navegador del usuario que trate todas las URL inseguras de un sitio (las que se sirven a través de HTTP) como si hubieran sido reemplazadas por URL seguras (las que se sirven a través de HTTPS). Esta directiva está destinada a sitios web con un gran número de URL heredadas inseguras.

La directiva 'upgrade-insecure-requests' se evalúa antes que 'block-all-mixed-content', por lo que permite cargar recursos HTTP vía HTTPS sin bloquearlos.
0

0 comentarios:

Publicar un comentario