web-dev-qa-db-fra.com

Redirection AWS ALB vers https

Mes serveurs Apache sont derrière un ALB/ELB. Je termine SSL sur l'équilibreur de charge. L'équilibreur de charge écoute à la fois sur 80 et 443. Je veux rediriger toutes les demandes http vers https.

J'ai cette règle de réécriture en place dans la configuration vhost:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

Cela fonctionne, mais le problème est que j'ai également des redirections dans un fichier htaccess. Lorsqu'une redirection se produit via le fichier htaccess, elle redirige d'abord vers http, puis la redirection de configuration vhost la prend et redirige vers https. Je veux éliminer la redirection http supplémentaire.

http://mysite.example.com/sub 301 https://mysite.example.com/sub 301 http: //mysite.example. com/newsub - cette redirection est htaccess 301 https://mysite.example.com/newsub 200

Je voudrais me déplacer avec grâce en ayant d'abord la redirection htaccess vers http. Je peux contourner cela en ajoutant https: //% {HTTP: Host} pour réécrire les règles. Est-ce la meilleure façon de procéder:

RewriteRule ^sub$ https://%{HTTP:Host}/newsub [R=301,L]
10
yossarian2004

Application Load Balancer prend désormais en charge deux nouvelles actions: redirection et réponse fixe. Vous pouvez configurer ces actions dans le cadre des règles de routage basées sur le contenu, ce qui vous permet de décharger cette fonctionnalité sur l'équilibreur de charge. Cela simplifie les déploiements tout en bénéficiant de l'échelle, de la disponibilité et de la fiabilité d'Elastic Load Balancing.

Voici ce que j'ai fait pour que cela fonctionne sur AWS:

Exemple de configuration pour la redirection ALB - HTTP -> HTTPS

https://aws.Amazon.com/about-aws/whats-new/2018/07/elastic-load-balancing-announces-support-for-redirects-and-fixed-responses-for-application- équilibreur de charge /

20
bhalothia

Si vos serveurs Web s'exécutent derrière un AWS Application Load Balancer et que vous avez configuré au moins un écouteur pour le port HTTP 80, vous pouvez rediriger http vers https directement par Ce faisant:

  1. Accédez à Console EC2 , puis Équilibrage de charge et Load Balancers dans le menu de gauche.
  2. Cliquez sur la case à cocher de votre nom ALB, puis sélectionnez Écouteurs Tab. Si vous créez deux écouteurs pour HTTP et HTTPS, passez à l'étape 4.
  3. Si vous n'avez pas défini d'écouteur HTTPS lors de la première création de Load Balancer, cliquez sur Ajouter un écouteur . Choisissez [~ # ~] https [~ # ~] et Port (443 généralement). Dans Action (s) par défaut sélectionnez Transférer à ... option et puis votre groupe cible pour votre équilibreur de charge. Poids c'est correct en 1. Choisissez la politique de sécurité appropriée puis ajoutez votre certificat SSL par défaut pour votre cas (vous devez avoir un certificat ssl enregistré sur AWS Certificate Manager ou AWS IAM ). Cliquez ensuite sur Enregistrer . Testez vos paramètres en allant à https: // load-balancer-dns-name ou https: // your-server-dns-name
  4. Pour configurer la redirection HTTP, cochez la case HTTP: 80 et cliquez sur le bouton Modifier . Dans la action (s) par défaut cliquez sur l'icône thrash pour la supprimer = Transférer à paramètre actuel. Cliquez ensuite sur Ajouter une action et sélectionnez l'option Rediriger vers . Les valeurs courantes pour cette section sont [~ # ~] https [~ # ~], 443 port, Hôte d'origine, chemin, requête et 301 - Déplacé de façon permanente. Enfin, cliquez sur le bouton Mettre à jour en haut à droite de la page.
  5. Testez maintenant en allant à http: // load-balancer-dns-name ou http: // your-server-dns-name et vous serez redirigé vers HTTPS.

J'espère que ça aide!

6
José Gil Ramírez