He configurado un AWS ELB para apuntar a mi servidor Ubuntu que ejecuta Wordpress 3.2.1. Todo funcionó muy bien en el servidor hasta que lo puse detrás de un equilibrador de carga.
Configuré el equilibrador de carga para reenviar el puerto 80 al puerto 80 y el puerto 443 al puerto 80.
Configuré mi archivo de hosts virtuales para verificar los encabezados del elb:
RewriteEngine en
RewriteCond% {HTTP: X-Fordered-Proto}!
Https RewriteRule! / Status https: //% {SERVER_NAME}% {REQUEST_URI} [L, R]
Ahora, cada vez que voy a una URL https me sale este mensaje:
Esta página web tiene un bucle de redireccionamiento
La página web en https://mywebsite.com/securepage/ ha dado como resultado demasiados redireccionamientos
Tan pronto como desactive el complemento https de wordpress
( http://wordpress.org/extend/plugins/wordpress-https/ )
Las páginas funcionan pero ahora están llenas de contenido mixto. las páginas que deberían ser https ya no son https.
Tan pronto como accedo al servidor directamente en lugar de a través del elb, vuelve a funcionar.
¿Alguna idea sobre cómo podría hacer que esto funcione con un AWS ELB?
fuente
Respuestas:
Me arriesgaría a adivinar sin que publique su configuración de ELB que el ELB está redirigiendo el tráfico HTTPS (443 / tcp) a la instancia EC2 en HTTP (80 / tcp). Entonces, usted
.htaccess
y el complemento están intentando redirigirlo de nuevo a HTTPS porque se está viendo a través de HTTP.Eche un vistazo a su consola EC2 debajo
Network & Security > Load Balancers
y me imagino que verá el dichoPort Configuration
algo en la línea de443 forwarding to 80 (HTTPS, Certificate: blah)
fuente
Intenta agregar esto a tu
httpd.conf
o un.htaccess
Cuando utiliza el equilibrador de carga + HTTPS, su servidor web no es consciente de que HTTPS se está utilizando en el front-end, por lo que sigue intentando redirigir al sitio HTTPS, cuando de hecho, HTTPS ya se está utilizando.
Lo anterior traducirá el encabezado que Load Balancer de Amazon envía (
X-Forwarded-Proto: https
) a una variable de entorno que Wordpress y otros scripts PHP entienden (HTTPS=1
)fuente
fastcgi_param HTTPS on;
De acuerdo con Amazon aquí https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf la solución es:
Todavía terminé con el bucle sin fin, así que cambié mi configuración de WordPress a partir de:
a:
Esto obligará a los usuarios a https, incluso si escriben http, además, facilita el desarrollo del sitio fuera de línea porque solo actualiza WP_HOME al host local y https ya no es el predeterminado
fuente
Citando a mí mismo de otra publicación útil /server//a/858308/450836 :
Para el oyente ELB no SSL, uso una configuración separada para redirigir todo el tráfico a https como oyente predeterminado.
fuente
Como sugirió @Tim, esto
$_SERVER['HTTPS']='on';
en wp-config.php hizo el truco para mí.También agregué esto a mi archivo .htaccess para forzar HTTPS:
fuente
Solución para demasiados problemas de redireccionamiento en aws ALB
Habilite el módulo de encabezado y luego agregue la siguiente entrada en la configuración de apache
SetEnvIf X-Fordered-Proto "https" HTTPS = en RequestHeader establece HTTPS "en" env = HTTPS
fuente