3 votes

AWS Beanstalk redirige toute l'application de http à https

L'équilibreur de charge aws transmet toutes les demandes https à l'instance ec2 sur le port 80. J'ai besoin de rediriger toutes les demandes http vers https.

Ce que j'ai compris jusqu'à présent, c'est que vous devez d'une manière ou d'une autre modifier l'instance ec2 avec les règles de redirection, puis enregistrer l'instance en tant que nouvelle AMI et faire pointer beanstalk vers la nouvelle AMI.

J'ai trouvé la règle de réécriture suivante, mais malheureusement je ne sais pas quoi en faire.

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

Je me suis connecté à mon instance ec2 et je suis allé à /etc/httpd/ et c'est tout ce que j'ai fait. Je suis complètement perdue avec ce que je suis censée faire à partir de là.

  1. Est-ce que je modifie un fichier ou est-ce que je crée un nouveau fichier ?
  2. Si je dois modifier ou créer un nouveau fichier, où se trouve-t-il ou comment l'appeler et où va-t-il ?
  3. Quelqu'un pourrait-il fournir le contenu exact du fichier
  4. Une fois que j'ai créé/modifié ce fichier, que dois-je faire ensuite ? Dois-je simplement aller sur la page ec2, cliquer sur la case à cocher à côté de mon instance, cliquer sur actions, et enfin créer l'image ?

Si oui, qu'est-ce que cela signifie ? Je ne sais pas quels paramètres je suis censé avoir ici. enter image description here

Enfin, je suppose que je dois simplement aller dans la configuration de mon tableau de bord de beanstalk et faire pointer mon env de beanstalk vers ma nouvelle AMI et redémarrer le serveur. Est-ce que cela semble correct ?

Si quelqu'un sait comment faire ou s'il existe un site web décrivant le processus en détail, je l'apprécierais.

Je tiens à préciser que j'utilise une application java sur tomcat. Je ne sais pas non plus si une AMI personnalisée aurait un effet sur la mise à l'échelle de la taille des serveurs.

3voto

user1819998 Points 56

Donc vous devez faire quelques choses

  1. dans votre équilibreur de charge, ayez les deux écouteurs définis, c'est-à-dire pour le port 80 et le port 443.
  2. dans l'instance ec2, dans /etc/httpd/conf.d/elasticbeanstalk.conf - ajouter votre règle de réécriture à la section de l'hôte virtuel
  3. Une fois que c'est fait, lorsque cela fonctionne, vous pouvez vouloir créer une image ami pour que ces paramètres persistent dans une image ami que vous pouvez utiliser plus tard pour créer des instances supplémentaires.

1voto

mr.bio Points 501

Bien que ce ne soit pas ce que vous avez demandé, nous le faisons à travers CloudFront . C'est beaucoup plus simple que ce que vous proposez et vous bénéficiez de tous les avantages du CDN CloudFront pour alléger la charge sur votre ou vos instances beanstalk ec2.

Commencez par créer un distribution avec un origine qui pointe vers votre équilibreur de charge beanstalk (vous pouvez également créer une origine personnalisée pointant vers votre nom de domaine elastic beanstalk). Créez ensuite un comportement avec une "politique de protocole de visualisation" pour "rediriger HTTP vers HTTPS".

Le seul problème est que vous devrez peut-être rechargement de votre certificat ssl pour ajouter un "chemin" afin qu'il soit utilisable dans 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

0voto

Daniel Byrne Points 1

Créez un fichier nommé elasticbeanstalk.conf dans le dossier /src/main/webapp/.ebextensions/httpd/conf.d/ dans le répertoire de votre projet.

Copier et coller ce code au fichier elasticbeanstalk.conf.

Supprimer les lignes suivantes.

     Order deny,allow
     Allow from all

Et mettez cette ligne à la place.

     Require all granted

Changez la ligne

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

zu

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

Maintenant, enregistrez le fichier, emballez votre projet et déployez-le.

0voto

Pour ceux qui se sont battus pendant un certain temps, j'ai trouvé un GitHub (de l'équipe AWS) avec toutes les configurations AWS et cela fonctionne pour la redirection pour Apache 2.2. (Pour les configurations pour Apache 2.4 et Nginx, voir le lien ci-dessous).

Apache 2.2

  1. Créez un fichier dans le répertoire racine de votre application : VOTRE_PROJET_ROOT/.ebextensions/httpd/conf.d/elasticbeanstalk.conf (Si vous utilisez Java IntelliJ, assurez-vous qu'il soit ajouté à l'artefact .WAR final).

  2. Ajoutez les lignes suivantes pour activer la redirection dans l'hôte virtuel :

    <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>

Pour plus d'exemples pour Apache 2.4 et Nginx, veuillez visiter ce dépôt GitHub :

https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files/aws-provided/security-configuration/https-redirect/java-tomcat

En outre, de nombreux autres exemples et configurations utiles sont disponibles.

Salutations

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X