Varnish ne supporte pas le https, si vous voulez quand même l’utiliser il faut mettre un autre reverse-proxy devant qui supporte le https.
On peut utiliser pound.
– Installation :
– Activation :
sed -i 's/startup=0/startup=1/' /etc/default/pound
– Configuration /etc/pound/pound.cfg :
## see pound(8) for details
User "www-data"
Group "www-data"
LogLevel 0
Alive 30
TimeOut 120
ConnTO 5
Grace 120
Control "/var/run/pound/poundctl.socket"
## listen, redirect and ... to:
ListenHTTPS
Address 0.0.0.0
Port 443
Cert "/etc/ssl/blog.jeremm.fr.pem"
xHTTP 0
AddHeader "X-Forwarded-Proto: https"
Service
BackEnd
Address 127.0.0.1
Port 80
End
Session
Type IP
TTL 60
End
End
End
– Le fichier pem doit contenir dans l’ordre : la clé privée, le certificat, le certificat de l’autorité de certification.
– Au niveau du backend, il faut mettre l’ip et le port où se trouve le varnish.
– Définissez plusieurs blocs Backend pour load-balancer les requêtes sur 2 varnishs.
Au niveau du varnish, ajoutez dans le vcl_recv :
if (!req.http.x-forwarded-proto) {
et
autour du bloc qui ajoute le X-Forwarded-For car il est déjà ajouté par pound.
Ajoutez ensuite dans le vcl_hash :
if (req.http.x-forwarded-proto) {
hash_data(req.http.x-forwarded-proto);
}
Ensuite au niveau du code il faut que les liens et appels à d’autres objets (images,css,js,…) se fassent en https.
Souvent les codes php le font déjà en détectant le protocole grâce à
$_SERVER['HTTPS'] ou $_SERVER['SERVER_PORT']
Il faut utiliser le
$_SERVER['HTTP_X_FORWARDED_PROTO'])
Ou ajouter sur le vhost apache2 :
SetEnvIf X-Forwarded-Proto https HTTPS on
P.S. (20/01/2013) : La version 2.5 de pound fournie par les dépôts squeeze semble avoir une fuite mémoire. Préférez la version 2.6 qu’il faudra compiler http://www.apsis.ch/pound/Pound-2.6.tgz