Je chaine ma configuration depuis
nginx > apache/php
à
haproxy > nginx > apache/php
(en utilisant haproxy 1.5-dev18 avec le support SSL compilé en)
Nginx et haproxy sont correctement configurés pour définir l'en-tête HTTP_X_FORWARDED_PROTO. Cependant, lorsque nginx obtient le trafic ssl de haproxy, il voit la connexion comme http et définit l'en-tête comme tel.
Comment puis-je configurer nginx pour transférer l'en-tête HTTP_X_FORWARDED_PROTO s'il existe, mais sinon continuer à le définir en fonction de la connexion?
proxy_set_header
lignes avant et après sont les mêmes.$scheme
vs$thescheme
.default $scheme
cas se produira, en définissant$thescheme
HTTPS bien qu'en fait la demande (à haproxy) soit HTTP non sécurisée. - Pour éviter cela, qu'en est-il de:default $http_x_forwarded_proto; '' $scheme;
donc si haproxy dit HTTP, il sera respecté.default $http_x_forwarded_proto;
).J'avais le même besoin avec AWS ELB
Voici ma ligne de résolution:
la source
$http_x_forwarded_proto
quelque part? Qu'est-ce que c'est?proxy_set_header X-Forwarded-Proto $scheme;
, ce qui ne fonctionne pasJe ne peux pas simplement commenter, donc je poste ceci comme une réponse: pourriez-vous nous donner une partie ou la totalité de votre configuration nginx afin que nous puissions voir ce qui ne va pas? Peut-être aussi votre configuration HAProxy?
Le premier problème auquel je peux penser est que votre HAProxy fait une terminaison ssl. Pour résumer, pour décharger vos serveurs backend, un équilibreur de charge peut être configuré pour faire tout le ssl, puis communiquer avec vos serveurs backend en HTTP. Comme le schéma ici: http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/
Pour vous donner une bonne réponse à votre question, pourriez-vous vérifier que vous n'avez aucun problème de bouclage dans votre configuration http <> https? Peut-être que vous pourriez alors rediriger http vers http, https vers https, puis forcer http à être redirigé vers https.
Pourriez-vous également vérifier que vous avez activé le passthrough SSL dans votre configuration HAProxy?
la source