Nosso site precisa de conformidade com HIPAA, portanto tudo precisa ser criptografado. Não quero que o cliente receba uma mensagem de erro quando colocar " http : //mysite.com", portanto, preciso oferecer suporte a HTTP e HTTPS e redirecionar o HTTP para HTTPS. Estou certo?
Eu fiz isso corretamente nos servidores web. Portanto, se eu me conectar diretamente aos servidores da Web, o HTTP será redirecionado automaticamente para HTTPS. Tudo bom.
Mas os servidores da Web estão atrás de um AWS Application Load Balancer. Não sei como redirecionar HTTP para HTTPS no ELB. Portanto, os navegadores clientes ainda podem se conectar ao ELB por HTTP.
Como configurar o HTTP => HTTPS em um AWS Application Load Balancer?
Em outras palavras, tenho certeza de que a conexão entre o ELB e os servidores Web é HTTPS, mas como garantir que a conexão entre os navegadores clientes e o ELB seja HTTPS?
fonte
X-Forwarded-Proto
cabeçalho que o LB envia.Respostas:
Você pode adicionar a configuração listada abaixo ao seu arquivo .htaccess. Mas antes disso, verifique se mod_rewrite está ativado no servidor e se o arquivo .htaccess não é negado.
Para obter uma explicação detalhada, consulte a documentação oficial do aws end. https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
fonte
Em julho de 2018 , isso é suportado nos balanceadores de carga de aplicativos.
HTTP:80
ouvinteRedirect
https
443
Original host, path, query
301 - Permanently moved
Imagem das configurações de um ouvinte HTTP para HTTPS no balanceador de carga de aplicativos da AWS
fonte
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) no 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:
e para o apache .htaccess algo como isto:
NOTA: Embora se possa pensar que seria conveniente se isso pudesse ser tratado sem a reconfiguração do servidor da web, a partir da primavera de 2018 não há como resolver isso usando apenas o ELB, ou seja, você deve configurar o servidor da web para fazer isso funcionar.
fonte