Upload
normandie-web-xperts
View
98
Download
1
Embed Size (px)
DESCRIPTION
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 !
Citation preview
Varnish
Faites briller vos applications et sites web !
Thibaud Juin
Thibaud Juin
Des centaines de sites Un même code
Optimisation
Optimisation du code
Une fonction/page
spécifique
Une fonction
commune à toutes
les pages
Optimisation
Évitons l'éternel recommencement,
utilisons le cache !
Varnish
Faites briller vos applications et sites web !
Thibaud Juin
Fonctionnement de Varnish
Mise en place
Aller plus loin !
Fonctionnement
VisiteurVarnishApache, BD...
Un serveur proxy inverse et cache HTTP
C'est quoi Varnish ?
VisiteurVarnishApache, BD...
Et pourquoi "Varnish" ?
Cache
FonctionnementC'est quoi Varnish ?
Fonctionnement
VisiteurVarnishApache, BD...
Cache
Load balancing
VCL : le langage de configuration
sub vcl_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 CONNECT which is weird. */
return (pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
/* We only deal with GET and HEAD by default */
return (pass);
}
if (req.http.Authorization || req.http.Cookie) {
return (pass);
...
Fonctionnement
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
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
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";
}
}
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;
}
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";
}
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
Convaincu ?
Des questions ?
Présentation réalisée avec Bunkr !
$ apt-get install varnish