Varnish est un serveur de cache HTTP qui permet d'accélérer les sites et applications web tout en allégeant la charge serveur... et bien d'autres choses encore !
10. VCL : le langage de configuration
subvcl_recv {
if (req.restarts == 0){
if (req.http.x-forwarded-for){
set req.http.X-Forwarded-For =
req.http.X-Forwarded-For + ", " + client.ip;
}else {
set req.http.X-Forwarded-For = client.ip;
}
}
if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" &&
req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE"){
/* Non-RFC2616 or CONNECTwhichis weird. */
return(pipe);
}
if (req.request != "GET" && req.request != "HEAD"){
/* We only deal withGETandHEADby default */
return(pass);
}
if (req.http.Authorization|| req.http.Cookie){
return(pass);
...
Fonctionnement
11. Mettre en place Varnish
C'est très simple !
Une installation, une petite configuration...
- vitesse ou taille du cache ?
Quelques questions...
- Une même page varie t-elle en fonction de l'utilisateur ? Panier, compte
utilisateur...
- GET et POST utilisés à bon escient ?
Utile :
- Utilisation des en-têtes HTTP de cache
- Mod Rpaf (apache)
- Vider le cache
12. Aller plus loin !
Configuration avec le VCL
Réception d'une requête
calcul du hash
HIT MISS
Requête au backend
Envoi de la réponse
13. Aller plus loin !
Vider le cache
sub vcl_recv {
if (req.request == "BAN") {
# Same ACL check as above:
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
ban("req.http.host == " + req.http.host +
"&& req.url == " + req.url);
# Throw a synthetic page so the
# request won't go to the backend.
error 200 "Ban added";
}
}
14. Aller plus loin !
Filtrer les requêtes
if(req.request != "GET" && req.request != "POST" req.request != "HEAD"){
error 405 "Not allowed.";
}
if(req.http.host == "beta.42stores.com" ){
set req.backend = beta;
}
else{
set req.backend = apache;
}
15. Aller plus loin !
Réécriture d'URL
if (req.url ~ "^/ex/") {
set req.url = regsub(req.url, "^/ex/(.*)$", "/exemple/1");
}
if (req.host == "exemple.com") {
set req.host = "www.exemple.com";
}
16. Pour terminer...
Varnish Cache is really, really fast. It typically speeds up delivery with a
factor of 300 - 1000x, depending on your architecture.
Performant
Flexible
Robuste