J'ai configuré un AWS ELB pour pointer vers mon serveur Ubuntu exécutant Wordpress 3.2.1. Tout fonctionnait très bien sur le serveur jusqu'à ce que je le mette derrière un équilibreur de charge.
J'ai configuré l'équilibreur de charge pour transférer le port 80 vers le port 80 et le port 443 vers le port 80.
J'ai configuré mon fichier d'hôtes virtuels pour vérifier les en-têtes de l'elb:
RewriteEngine On
RewriteCond% {HTTP: X-Forwarded-Proto}! Https
RewriteRule! / Status https: //% {SERVER_NAME}% {REQUEST_URI} [L, R]
Maintenant, chaque fois que je vais sur une URL https, je reçois ce message:
Cette page Web a une boucle de redirection
La page Web à https://mywebsite.com/securepage/ a entraîné trop de redirections
Dès que j'ai désactivé le plugin wordpress https
( http://wordpress.org/extend/plugins/wordpress-https/ )
Les pages fonctionnent mais sont maintenant pleines de contenu mixte. les pages qui devraient être https ne sont plus https.
Dès que j'accède au serveur directement au lieu de passer par le coude ça marche à nouveau.
Avez-vous des idées sur la façon de faire fonctionner cela avec un AWS ELB?
la source
Réponses:
Je risquerais de deviner sans que vous publiez votre configuration ELB que l'ELB redirige le trafic HTTPS (443 / tcp) vers l'instance EC2 sur HTTP (80 / tcp). Ensuite, vous
.htaccess
et le plugin essayez de le rediriger vers HTTPS car il est vu sur HTTP.Allez jeter un œil à votre console EC2 sous
Network & Security > Load Balancers
et j'imagine que vous verrez lePort Configuration
dit quelque chose dans le sens de443 forwarding to 80 (HTTPS, Certificate: blah)
la source
Essayez d'ajouter ceci à votre
httpd.conf
ou à un.htaccess
Lorsque vous utilisez l'équilibreur de charge + HTTPS, votre serveur Web ne sait pas que HTTPS est utilisé sur le frontal, il continue donc d'essayer de rediriger vers le site HTTPS, alors qu'en fait, HTTPS est déjà utilisé.
Ce qui précède traduira l'en-tête que Load Balancer d'Amazon envoie (
X-Forwarded-Proto: https
) en une variable d'environnement que Wordpress et d'autres scripts PHP comprennent (HTTPS=1
)la source
fastcgi_param HTTPS on;
Selon Amazon ici https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf, le correctif est:
Je me suis quand même retrouvé avec la boucle sans fin, j'ai donc changé ma configuration WordPress à partir de:
à:
Cela forcera les utilisateurs à https, même s'ils tapent http, et cela facilite le développement du site hors ligne car vous mettez simplement à jour WP_HOME sur l'hôte local et https n'est plus la valeur par défaut
la source
Me citant d'un autre article utile /server//a/858308/450836 :
Pour l'écouteur ELB non SSL, j'utilise une configuration distincte pour rediriger tout le trafic vers https comme écouteur par défaut.
la source
Comme l'a suggéré @Tim, cela
$_SERVER['HTTPS']='on';
dans wp-config.php a fait l'affaire pour moi.J'ai également ajouté ceci à mon fichier .htaccess pour forcer HTTPS:
la source
Correction de trop de problèmes de redirection dans aws ALB
Activer le module d'en-tête puis ajouter l'entrée suivante dans la configuration apache
SetEnvIf X-Forwarded-Proto "https" HTTPS = sur RequestHeader set HTTPS "on" env = HTTPS
la source