88 votes

Comment forcer https sur elastic beanstalk ?

Je n'arrive pas à forcer https sur le niveau d'utilisation gratuit d'elastic beanstalk.

J'ai essayé la suggestion suivante à Comment forcer https sur amazon elastic beanstalk sans échouer le contrôle de santé ?

En utilisant cette règle de réécriture Apache

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/status$ 
RewriteCond %{REQUEST_URI} !^/version$ 
RewriteCond %{REQUEST_URI} !^/_hostmanager/ 
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Lorsque j'essaie cela, les demandes http ne sont pas redirigées vers https comme je le voudrais. Au contraire, la page http se charge normalement. J'ai également essayé d'utiliser l'en-tête X-Forwarded-Port avec le même résultat.

J'ai également essayé la règle de réécriture suivante

RewriteCond %{SERVER_PORT} 80
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Et cette règle provoque une boucle de redirection. Il semblerait donc que les règles de réécriture d'Apache ne détectent pas les en-têtes X-Forwarded-Port et X-Forwarded-Proto d'Elastic Load Balancer, mais une boucle de redirection n'est pas non plus ce que je recherche.

Aidez-moi, s'il vous plaît. Je suis nouveau sur AWS, Elastic Beanstalk, et je ne suis pas très familier avec les règles Apache. Je ne sais pas trop où aller à partir de là. Merci.

-4voto

danilop Points 387

Si vous utilisez un environnement Load Balanced, vous pouvez suivre les instructions pour Configuration de HTTPS pour votre environnement AWS Elastic Beanstalk et à la fin, désactivez le port HTTP.

Notez qu'actuellement le Niveau d'utilisation gratuite d'AWS comprend le même nombre d'heures pour un Elastic Load Balancing (ELB) que pour une Micro Instance EC2.

-4voto

gusgard Points 448

C'est une solution facile

  1. ssh dans votre instance EC2

  2. copier le contenu de /etc/httpd/conf.d/wsgi.conf dans un fichier local appelé wsgi.conf qui sera placé dans le dossier de base de votre application

  3. Modifiez la version locale du fichier wsgi.conf et ajoutez les règles de redirection suivantes dans les balises <VirtualHost> < /VirtualHost>.

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
  4. Changez le "/status" à la page que vous utilisez comme bilan de santé page.

  5. Sauvegarder le fichier

  6. Modifiez votre fichier <app>.conf à l'intérieur de votre . ebextensions pour ajouter une commande de conteneur pour copier cette version de wsgi.conf sur la version d'Amazon

    container_commands:
    01_syncdb:
      command: "django-admin.py syncdb --noinput" leader_only: true
    02_collectstatic:
      command: "django-admin.py collectstatic --noinput"
    03_wsgireplace:
      command: 'cp wsgi.conf ../wsgi.conf'
    ...
  7. Déployer le code.

  8. La version déployée de wsg.conf dans /etc/httd/conf.d/wsgi.conf inclura maintenant les règles de redirection nécessaires.

Cela devrait fonctionner et le fichier sera correctement mis à jour pour chaque déploiement. La seule chose à surveiller est que si Amazon modifie le contenu de son fichier wsgi.conf de base à l'avenir, votre copie pourrait ne plus fonctionner.

Auteur rickchristianson

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X