Ce site/blog est “propulsé” par wordpress. La configuration est la suivante :
haproxy en front qui redispatch sur Varnish ou directement sur Apache si varnish est down. Apache et Varnish sont lancés sur le même serveur (d’où la règle de vérification de la purge basée sur 127.0.0.1… A modifier / améliorer pour plus de sécurité).
Le VCL utilisé pour cacher wordpress est celui trouvé par ailleurs pour la version 2.0 de Varnish mais adapté à la Varnish 3.0 (sans quoi il y avait quelques problèmes de compilation du VCL au démarrage). NOTA : le remplacement du purge par un ban qui permet de faire une purge wildcard (si on enlève le ban, la purge n’a lieu que sur l’URL elle même et du coup les changements de thème et autres subtilités de ce genre ne sont plus effective même après une purge via wp-varnish).
Le VCL complet figure ci-dessous :
backend default {
.host = "127.0.0.1";
.port = "80"; // Apache is listening on port 80
}
acl purge {
"localhost";
"127.0.0.1";
}
sub vcl_recv {
if (req.request == "PURGE") {
if(!client.ip ~ purge) {
error 405 "Not allowed.";
}
//purge("req.url ~ ^" req.url "$ && req.http.host == "req.http.host);
//error 200 "Purged.";
ban("req.url ~ ^" req.url "$ && req.http.host == "req.http.host);
return (lookup);
}
if (req.request != "GET" &&
req.request != "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS" &&
req.request != "DELETE") {
return (pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
return (pass);
}
if (req.url ~ "wp-(login|admin)" || req.url ~ "preview=true") {
return (pass);
}
remove req.http.cookie;
return (lookup);
}
sub vcl_hit {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
}
sub vcl_fetch {
if (req.url ~ "wp-(login|admin)" || req.url ~ "preview=true") {
//return (pass);
return (hit_for_pass);
}
set beresp.ttl = 72h;
return (deliver);
}
Bon reverse proxy cache à tous…
HTH.
Références:
[1] à renseigner : le post d’origine sur le VCL pour la V2… Je ne le trouve plus ![]()
[2] https://www.varnish-cache.org/docs/trunk/tutorial/purging.html