Forcer le HTTPS avec un Load Balancer chez Amazon
Tags : Apache, Amazon, Url rewriting
Amazon permet de configurer son service Load Balancing pour gérer le chiffrement de votre site et renvoyer du HTTP sur vos instances. Cette solution permet de décharger votre serveur WEB mais impossible d'utiliser la variable "SERVER_PORT" dans vos conditions car le serveur répond uniquement sur le port 80. Logique !
La solution est plus ou moins indiquée dans la documentation d'amazon et c'est en place depuis le 27 octobre 2010.
Il faut donc utiliser le header X-Forwarded-Proto qui contient le protocole du client renvoyé par le load balancer. Et voici deux petites lignes permettant de forcer le https à votre client :
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
La première ligne active le mod rewrite, la seconde vérifie si le protocole est donc différent de https et dans ce cas la troisième ligne effectue une redirection 301 vers le même domaine en excluant le cas ou vous consultez le server status !
Billets relatifs
- Url Rewriting en ASP avec ISAPI Rewrite
- Permissions utilisateurs par projets dans un dépôt Subversion
- Limitation paramètres dans fichier .htaccess