17
Varnish Faites briller vos applications et sites web ! Thibaud Juin

Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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

Page 1: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Varnish

Faites briller vos applications et sites web !

Thibaud Juin

Page 2: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Thibaud Juin

Des centaines de sites Un même code

Optimisation

Page 3: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Optimisation du code

Une fonction/page

spécifique

Une fonction

commune à toutes

les pages

Page 4: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Optimisation

Évitons l'éternel recommencement,

utilisons le cache !

Page 5: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Varnish

Faites briller vos applications et sites web !

Thibaud Juin

Page 6: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Fonctionnement de Varnish

Mise en place

Aller plus loin !

Page 7: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Fonctionnement

VisiteurVarnishApache, BD...

Un serveur proxy inverse et cache HTTP

C'est quoi Varnish ?

Page 8: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

VisiteurVarnishApache, BD...

Et pourquoi "Varnish" ?

Cache

FonctionnementC'est quoi Varnish ?

Page 9: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Fonctionnement

VisiteurVarnishApache, BD...

Cache

Load balancing

Page 10: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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

Page 11: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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

Page 12: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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

Page 13: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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";

}

}

Page 14: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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;

}

Page 15: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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";

}

Page 16: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

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

Page 17: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Convaincu ?

Des questions ?

Présentation réalisée avec Bunkr !

$ apt-get install varnish