O AWS Beanstalk redireciona todo o aplicativo de http para https

3

Eu tenho tentado descobrir isso por um tempo e não tive sorte. Como tenho certeza de que vocês estão bem cientes, o balanceador de carga aws encaminha todos os pedidos https para a instância ec2 pela porta 80. Eu preciso redirecionar de alguma forma todas as solicitações http para https.

O que eu aprendi até agora é que você precisa modificar de alguma forma a instância ec2 com as regras de redirecionamento e depois salvar a instância como uma nova AMI e apontar o beanstalk para a nova AMI. Bem, o resto parece um pouco incerto para mim e eu não sou especialista em servidores, então, por favor, descubra comigo.

Eu encontrei a seguinte regra de reescrita, mas infelizmente não sei o que fazer com ela.

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

Eu ssh'd na minha instância ec2 e fui para /etc/httpd/ e isso é o que eu fiz. Estou completamente perdida com o que devo fazer a partir daí.

  1. Eu modifico um arquivo ou crio um novo arquivo?
  2. Se eu precisar modificar ou criar um novo arquivo, onde ele estaria ou como eu o chamaria e para onde ele iria?
  3. Alguém poderia fornecer o conteúdo exato do arquivo
  4. Depois de criar / modificar este arquivo, o que faço a seguir? Eu apenas vou para a página do ec2, clico na caixa de seleção ao lado da minha instância, clico em ações e finalmente criei uma imagem?

Se sim, o que tudo isso significa? Não sei quais configurações devo ter aqui.

Por último, estou assumindo que basta ir para a configuração no meu painel de beanstalk e apenas apontar meu env de beanstalk para minha nova AMI e reiniciar o servidor. Isso parece correto?

Se alguém souber como fazer isso ou um site descrevendo o processo em detalhes, eu o aprovo.

Gostaria de salientar que estou usando um aplicativo java no tomcat. Não tenho certeza se uma AMI personalizada também aumentaria o tamanho dos servidores.

Muito obrigado.

    
por George 11.11.2014 / 01:34

4 respostas

3

então você precisa fazer algumas coisas

  1. no seu balanceador de carga, tenha os dois ouvintes definidos, por exemplo, para a porta 80 e a porta 443
  2. na instância do ec2, em /etc/httpd/conf.d/elasticbeanstalk.conf - adicione sua regra de reescrita à seção do host virtual
  3. Depois de concluído, quando isso funcionar, talvez você queira criar uma imagem ami para que essas configurações persistam em uma imagem ami que você possa usar posteriormente para criar instâncias adicionais
por 16.11.2014 / 08:44
1

Embora não seja o que você pediu, fazemos isso por meio do CloudFront . É muito mais fácil do que o que você está propondo e você obtém todos os benefícios adicionais do CDN do CloudFront para ajudar a facilitar a carga em suas instâncias de ecstalação de beans de feijão.

Primeiro configure uma distribuição com uma origem que aponte para o balanceador de carga do beanstalk (você também pode criar uma origem personalizada apontando para o seu nome de domínio do beanstalk elástico). Em seguida, crie um comportamento com uma "Política do Protocolo Viewer" para "Redirecionar HTTP para HTTPS".

O único problema é que você pode precisar fazer um novo upload do seu certificado SSL para adicionar um "caminho" para que seja utilizável no CloudFront.

aws iam upload-server-certificate --server-certificate-name certificate_object_name --certificate-body file://public_key_certificate_file --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file  --path cloudfront_path
    
por 11.11.2014 / 04:20
0

Crie um arquivo chamado elasticbeanstalk.conf dentro da pasta /src/main/webapp/.ebextensions/httpd/conf.d / no diretório do projeto. p>

Copie e cole este código para o arquivo elasticbeanstalk.conf.

Exclua as seguintes linhas.

     Order deny,allow
     Allow from all

E coloque esta linha em seu lugar.

     Require all granted

Altere a linha

   RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

para

   RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Agora salve o arquivo, empacote seu projeto e implemente-o.

    
por 30.05.2018 / 13:34
0

Para aqueles que lutaram por algum tempo, encontrei um GitHub (da equipe da AWS) com todas as configurações da AWS e isso funciona para o redirecionamento do Apache 2.2. (Para as configurações do Apache 2.4 e Nginx, por favor, veja o link abaixo).

Apache 2.2

  1. Crie um arquivo no diretório raiz do seu aplicativo: YOUR_PROJECT_ROOT / .ebextensions / httpd / conf.d / elasticbeanstalk.conf (Se estiver usando o Java IntelliJ, certifique-se de adicioná-lo ao artefato final .WAR)

  2. Adicione as seguintes linhas para habilitar o redirecionamento no host virtual:

    <VirtualHost *:80>
        LoadModule rewrite_module modules/mod_rewrite.so
        RewriteEngine On
        RewriteCond %{HTTP:X-Forwarded-Proto} !https
        RewriteCond %{HTTP_USER_AGENT} !ELB-HealthChecker
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>
    
        ProxyPass / http://localhost:8080/ retry=0
        ProxyPassReverse / http://localhost:8080/
        ProxyPreserveHost on
    
        ErrorLog /var/log/httpd/elasticbeanstalk-error_log
    </VirtualHost>
    

Para mais exemplos do Apache 2.4 e Nginx, visite este repositório do GitHub:

link

Além disso, há muito mais configuração e exemplos úteis disponíveis.

Atenciosamente

    
por 04.10.2018 / 09:43