Quero redirecionar todas as solicitações HTTP para solicitações https no ELB . Eu tenho duas instâncias EC2. Estou usando o nginx para o servidor. Eu tentei reescrever os arquivos conf do nginx sem sucesso. Eu adoraria alguns conselhos sobre isso.
redirect
nginx
amazon-ec2
https
amazon-elb
Amit Badheka
fonte
fonte
Respostas:
Os balanceadores de carga de aplicativos AWS agora oferecem suporte a redirecionamento de HTTP para HTTPS nativo.
Para habilitar isso no console, faça o seguinte:
O mesmo pode ser alcançado usando o CLI conforme descrito aqui .
Também é possível fazer isso no Cloudformation, onde você precisa configurar um objeto Listener como este:
Se você ainda usa balanceadores de carga clássicos, vá com uma das configurações NGINX descritas pelos outros.
fonte
instances
guia)O ELB define o
X-Forwarded-Proto
cabeçalho, você pode usá-lo para detectar se a solicitação original foi para HTTP e redirecionar para HTTPS.Você pode tentar isso em seu
server
conf:Dê uma olhada na documentação do ELB .
fonte
nginx
configuração, mas o princípio é aplicável a qualquer servidor web.Eu tive o mesmo problema, na minha situação o HTTPS era totalmente gerenciado pelo ELB e eu não sabia meu domínio de origem com antecedência, então acabei fazendo algo como:
E então, é claro, apontando o ELB 'https' para a porta 80 da instância e a rota 'http' para a porta 81 da instância.
fonte
O Amazon Elastic Load Balancer (ELB) oferece suporte a um cabeçalho HTTP chamado X-FORWARDED-PROTO. Todas as solicitações HTTPS que passam pelo ELB terão o valor de X-FORWARDED-PROTO igual a “HTTPS”. Para as solicitações HTTP, você pode forçar o HTTPS adicionando a seguinte regra de reescrita simples. Para mim, funciona bem!
Apache
Você pode adicionar as seguintes linhas em seu arquivo .htaccess:
Ou se você usar vhost.conf para gerenciar vários domínios no mesmo servidor da web EC2, você pode adicionar o seguinte ao vhost.conf (adicione-o ao domínio que deseja usar https para ele):
IIS
Instale o módulo IIS Url-Rewrite, usando a GUI de configuração, adicione estas configurações:
Leia mais aqui
fonte
RewriteCond %{HTTP:X-Forwarded-Proto} !(https|^$)
As soluções htaccess acima causaram falha na verificação de integridade do ELB. Tive alguns problemas para encontrar a solução até que descobri um artigo online em que alguém tinha os mesmos problemas que eu. Sua solução foi adicionar isso ao início do arquivo htaccess:
Fonte: Redirecionando HTTP para HTTPS com AWS e ELB
fonte
Pode não ser a solução que você está procurando, mas outra opção pode ser usar o AWS CloudFront além do ELB. O CloudFront oferece a opção de redirecionar todo o tráfego HTTP de entrada para HTTPS.
fonte
Tive um problema estranho com a configuração do nginx e do ELB. Minha configuração incluiu 3 serviços diferentes dentro de um nginx atrás do ELB. E eu tive problema de conteúdo misto: quando sua solicitação para ELB é https, mas dentro de ELB http apenas, e o servidor cria um caminho relativo para estático usando http, então o navegador falha com o problema de 'conteúdo misto'. E devo criar solução tanto para http / https funcionar sem nenhum redirecionamento.
Aqui está a configuração localizada na
nginx/conf.d/
pasta:Isso significa que teremos conhecimento do que é o protocolo do cliente real. Como você pode ver, o teremos na
$switch
var. E, neste momento, você usa isso em todos os locais onde precisar:Com a configuração de HTTPS, o aplicativo php detecta automaticamente o protocolo correto e constrói cuidadosamente o caminho relativo para evitar problemas de conteúdo misto.
Cumprimentos.
fonte
Baseado na resposta de @Ulli. Se você deseja configurá-lo usando o Terraform , aqui está um exemplo>
Fonte
fonte
Crie um arquivo
.ebextensions/00_forward_http_to_https.config
com o seguinte conteúdo:Certifique-se de definir a variável de ambiente APP_URL no console de gerenciamento AWS com antecedência.
fonte