J'utilise à la fois des écouteurs HTTP et HTTPS sur mon équilibreur de charge Elastic Load Balancing, mais uniquement les écouteurs HTTP sur mon serveur web principal. Je veux que tout le trafic parvenant à mon serveur web sur le port 80 soit redirigé vers le port HTTPS 443, mais je ne veux pas que l'écouteur de mon serveur principal soit le port 443. Lorsque je redirige le trafic de cette façon, mon site web cesse de fonctionner. Comme résoudre ce problème ?

Cette situation est généralement due à un processus semblable à ce qui suit :

  1. La règle de réécriture du serveur web pour l'acheminement des demandes HTTP vers HTTPS entraîne l'utilisation par les demandes du port 443 pour le trafic HTTPS sur l'équilibreur de charge.
  2. L'équilibreur de charge continue à envoyer les demandes au serveur web principal sur le port 80.
  3. Le serveur principal redirige ces demandes vers le port 443 de l'équilibreur de charge.

Ceci provoque une boucle infinie de redirection entre l'équilibreur de charge et le serveur web principal et les demandes ne sont jamais traitées.

A l'aide de l'en-tête X-Forwarded-Proto de la demande HTTP, modifiez la règle de réécriture de votre serveur web afin que celle-ci s'applique uniquement si le client utilise le protocole HTTP. Ignorez la règle de réécriture pour tous les autres protocoles utilisés par le client.

Ainsi, si les clients utilisent le protocole HTTP pour accéder à votre site web, ils sont redirigés vers une URL HTTPS ; s'ils utilisent HTTPS, ils sont servis directement par le serveur web.

Par exemple, la règle de réécriture d'un serveur principal Apache se présentera comme suit :

 

...

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} =http

RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

...

HTTP, HTTPS, écouteur


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 12/08/2016