Eu configurei um AWS ELB para apontar para o meu Ubuntu Server executando o Wordpress 3.2.1. Tudo funcionou muito bem no servidor até que eu o coloquei atrás de um balanceador de carga.
Eu configurei o balanceador de carga para encaminhar a porta 80 para a porta 80 e a porta 443 para a porta 80.
Eu configurei meu arquivo de hosts virtuais para verificar os cabeçalhos do elb:
RewriteEngine On
RewriteCond% {HTTP: X-Forwarded-Proto}! Https
RewriteRule! / Status https: //% {SERVER_NAME}% {REQUEST_URI} [L, R]
Agora, sempre que vou a um URL https, recebo esta mensagem:
Esta página da Web possui um loop de redirecionamento
A página da Web em https://mywebsite.com/securepage/ resultou em muitos redirecionamentos
Assim que desabilito o plugin https do wordpress
( http://wordpress.org/extend/plugins/wordpress-https/ )
As páginas funcionam, mas agora estão cheias de conteúdo misto. as páginas que deveriam ser https não são mais https.
Assim que eu acessar o servidor diretamente, em vez de através do elb, ele funcionará novamente.
Alguma idéia de como eu poderia fazer isso funcionar com um AWS ELB?
Respostas:
Eu arriscaria um palpite sem você postar sua configuração ELB de que o ELB está redirecionando o tráfego HTTPS (443 / tcp) para a instância do EC2 em HTTP (80 / tcp). Então você
.htaccess
e o plugin estão tentando redirecioná-lo de volta para HTTPS porque está sendo visto por HTTP.Vá dar uma olhada no seu console EC2 abaixo
Network & Security > Load Balancers
e eu imagino que você verá o quePort Configuration
diz algo ao longo das linhas de443 forwarding to 80 (HTTPS, Certificate: blah)
fonte
Tente adicionar isso ao seu
httpd.conf
ou a um.htaccess
Ao usar o balanceador de carga + HTTPS, seu servidor da web não sabe que o HTTPS está sendo usado no front-end; portanto, tente redirecionar para o site HTTPS, quando, de fato, o HTTPS já está sendo usado.
O texto acima traduzirá o cabeçalho que o Amazon Load Balancer envia (
X-Forwarded-Proto: https
) em uma variável de ambiente que o Wordpress e outros scripts PHP entendem (HTTPS=1
)fonte
fastcgi_param HTTPS on;
De acordo com a Amazon aqui https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf, a correção é:
Eu ainda acabei com o loop infinito, então mudei minha configuração do WordPress a partir de:
para:
Isso forçará os usuários a https, mesmo se digitarem http, além de facilitar o desenvolvimento do site offline, porque você acabou de atualizar o WP_HOME para o host local e https não é mais o padrão
fonte
Citando-me de outra publicação útil /server//a/858308/450836 :
Para o ouvinte ELB não SSL, uso uma configuração separada para redirecionar todo o tráfego para https como ouvinte padrão.
fonte
Como o @Tim sugeriu, isso
$_SERVER['HTTPS']='on';
no wp-config.php fez o truque para mim.Também adicionei isso ao meu arquivo .htaccess para forçar o HTTPS:
fonte
Correção para muitos problemas de redirecionamento no aws ALB
Ative o módulo header e adicione a seguinte entrada na configuração do apache
SetEnvIf X-Forwarded-Proto "https" HTTPS = no RequestHeader defina HTTPS "em" env = HTTPS
fonte