Jump to content

Erreur "Mixed content" derrière un reverse proxy (Nginx)


Recommended Posts

Bonjour à tous,

 

Je découvre cet outil qui semble assez extraordinaire, donc d'abord bravo aux devs.

 

J'ai fait une première install de Prestashop pour tests, sur un serveur dédié tournant sous Debian.

Chacun de mes services web tourne dans un vhost (un conteneur LXC en l'occurence), et au niveau du host j'utilise Nginx comme reverse proxy pour rediriger les requêtes vers le bon vhost en fonction du sous-domaine.

La connexion est cryptée entre les clients et le host, avec un certificat valide, et le transit se fait en clair entre le host et les vhosts. Donc en résumé :

 

Client <---[https]---> host (reverse proxy Nginx) <---[http]---> vhost (serveur Nginx <-> Prestashop)

 

Problème : certains contenus transitent en clair jusqu'au client, j'ai donc les avertissements "Contenu mixte", "Mixed content" et autres "Contenu partiellement chiffré".

Je précise que je n'ai pas ce problème avec mes autres services, ou que je l'ai réglé avec des méthodes qui ne fonctionnent pas ici.

 

 

Je ne parviens pas à faire ré-écrire ces requêtes par Nginx.

Si j'active le ssl dans Prestashop, donc entre le host et le vhost, le frontend devient inaccessible car on créé une boucle de redirection dont on ne sort plus...

 

Quelqu'un a-t-il déjà résolu ce problème ?

 

Je ne pense pas être le premier à faire tourner Prestashop derrière un reverse proxy en SSL, mais je crois avoir épuisé ce que les moteurs de recherche peuvent me dire avec mes mots clés...

 

Merci d'avance pour votre aide!

Edited by kiv (see edit history)
Link to comment
Share on other sites

Prestashop génère un contenu compatible avec son réglage http si ssl non activé (ton cas a priori) et https lorsqu'il est réglé sur ssl et ssl partout.

Autrement dit tout les liens et destination des forms ont pour cible http - il est donc normal, a moins que tu ne post-process le flux html que ls pages soient en mixed content.

 

Tu dois activer le ssl sur ton prestashop et donc faire la connexion entre ton nginx et ton ps en ssl (ce qui va te coûter 2 négociation ssl)

Link to comment
Share on other sites

Prestashop génère un contenu compatible avec son réglage http si ssl non activé (ton cas a priori) et https lorsqu'il est réglé sur ssl et ssl partout.

Autrement dit tout les liens et destination des forms ont pour cible http - il est donc normal, a moins que tu ne post-process le flux html que ls pages soient en mixed content.

 

Tu dois activer le ssl sur ton prestashop et donc faire la connexion entre ton nginx et ton ps en ssl (ce qui va te coûter 2 négociation ssl)

 

Merci pour cette réponse limpide. C'est un peu ce que je craignais, mais je suppose que c'est un moindre mal en terme de ressources, plutôt que faire crypter l'ensemble du flux par le reverse proxy à la volée...

 

Penses-tu que ça fonctionnera avec un bête certificat auto-signé entre le host et ps, ou bien j'aurai des avertissements de certificat non valide ?

 

 

Link to comment
Share on other sites

Dans la mesure où c'est le canal entre ton nginx et ton prestashop qui verra l'auto-signé, a condition de régler le proxy pour ne pas vérifier le certificat, aucun problème.

 

Par contre 2 nego ssl c'est minimum 2x180ms (si tu as des bêtes de courses). A ta place j'investirai dans une ip secondaire (2€/mois) et je me passerais du reverse proxy

Edited by doekia (see edit history)
  • Like 1
Link to comment
Share on other sites

Parfait, ça fonctionne.

J'aurais pu le tenter plus tôt, au lieu de chercher à tout prix la solution idéale...

 

Je prends volontiers les conseils sur l'architecture la plus rapide : pour l'instant je teste sur un serveur perso très basique (Kimsufi), tout en essayant d'avoir un prototype "réaliste".

La solution qui entrera en prod aura certainement un serveur dédié. Si ce n'est pas le cas je retiens l'idée de l'IP secondaire.

 

Merci encore pour tes réponses rapides et efficaces.

Edited by kiv (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...