Geralmente, o que acontece é que o ELB está configurado para receber https (porta 443) e encaminhar para a instância do EC2 (destino do balanceador de carga) em http (porta 80).
O servidor da Web de back-end redireciona essas solicitações para a porta 443 no balanceador de carga, causando um loop infinito de redirecionamento (entre o balanceador de carga e o servidor da web de back-end).
Uma mensagem de erro comum é ERR_TOO_MANY_REDIRECTS
.
A solução é olhar para o X-Forwarded-Proto, que é o protocolo visto pelo balanceador de carga, ao decidir sobre o redirecionamento.
Para o nginx, a configuração ficará assim:
server {
listen 80;
server_name www.example.org;
if ($http_x_forwarded_proto = 'http') {
return 301 https://$server_name$request_uri;
}
}
e para o apache .htaccess algo como isto:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
NOTA: Embora alguém possa pensar que seria conveniente se isso pudesse ser tratado sem a reconfiguração do servidor web, a partir da primavera de 2018 não há como resolver isso usando apenas o ELB, ou seja, você deve configurar seu servidor web para fazer esse trabalho .