wallpaper-2177039

Apache 2.2 – Custom HTTP Header & Redirect

Posted on 24/08/2012 · Posted in Linux

Derniérement j’ai eu besoin de fournir une ressource differente en fonction du protocole utilisé.
Un fichier robots.txt pour autoriser l’indéxation sur HTTP et le refuser sur HTTPS.

Le soucis, c’est que notre serveur HTTP est derrière un reverse proxy HTTPS to HTTP (Pound), et qu’en l’état le serveur HTTP n’a pas moyen de savoir si l’utilisateur a demandé une connexion SSL ou non.

Pour pouvoir réaliser ce besoin, nous injectons un header HTTP au niveau du reverse proxy Pound : X-Forwarded-Proto qui contient la valeur “https”

1
2
3
4
5
6
7
8
ListenHTTPS
    xHTTP 2
    Address 1.2.3.4
    Port    443
    Cert    "/etc/ssl/certs/private/domain.tld.pem"
    HeadRemove "X-Forwarded-Proto"
    AddHeader "X-Forwarded-Proto: https"
End

Maintenant,
Le serveur HTTP peut savoir si l’utilisateur a établit une connexion sécurisé ou non.
Nous réalisons donc une ré-écriture d’URL en fonction de ce Custom HTTP Header.

1
2
3
RewriteCond %{HTTP:X-Forwarded-Proto} ^https$
RewriteCond %{REQUEST_URI} ^/robots.txt$
RewriteRule ^(.*)$ /robots_https.txt [L]